DockerFile的应用

DockerFile的应用

  • 一、介绍
    • 1 构建的三步骤
    • 2 构建的过程
  • 二、常用命令
  • 三、DockerFile案例
    • 1 创建DockerFile文件
    • 2 使用DockerFile文件构建镜像
    • 3 启动容器并验证
  • 四 DockerFile添加数据卷

一、介绍

DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

1 构建的三步骤

  • 编写DockerFile文件
  • docker build 构建镜像
  • docker run 启动镜像

2 构建的过程

  • 每条保留字指令都必须为大写字母 且 后面要跟知晓一个参数
  • 指令是从上到下 顺序执行的
  • 井号(#)表示注释
  • 每条指令都会创建一个新的镜像层,并对镜像提交(构建第一层提交,在覆盖第二层再提交,在覆盖第三层再提交…直至全部构建完毕)

二、常用命令

指令说明
FROM基础镜像,当前新镜像是基于哪个镜像的,有继承的意味
MAINTAINER镜像维护者的姓名和邮箱地址
RUN容器构建时需要运行的命令
EXPOSE当前容器对外暴露的端口
WORKDIR指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV用来在构建镜像过程中设置环境变量
ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY类似ADD,拷贝文件和目录到镜像中。
将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
COPY src dest
COPY[“src”,"dest]
VOLUME容器数据卷,用于数据保存和持久化工作
CMD指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
ONBUILD当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

三、DockerFile案例

我们从官网pull下来的centos是没有vim命令的,我们可以自定义一个DockerFile,增加上想要的环境即可。

1 创建DockerFile文件

FROM centosMAINTAINER mzw<ruoshui_t@163.com>ENV MYPATF /usr/localWORKDIR $MYPATHRUN yum -y install vimEXPOSE 80CMD echo $MYPATH
CMD echo "success ----------- 888"
CMD /bin/bash

2 使用DockerFile文件构建镜像

docker build -f DockerFile文件路径 - t 镜像名称:tag .

在这里插入图片描述

3 启动容器并验证

在这里插入图片描述
此时已经有了vim命令

四 DockerFile添加数据卷

DockerFile添加数据卷只需要添加内容【VOLUME: 容器数据卷,用于数据保存和持久化工作】
简单案例

  • 创建dockerFile文件

    vim dockerFile02
    
  • 编写代码

    FROM centosVOLUME ["dataVolume01", "dataVolume02"]CMD /bin/bash
    
  • 构建镜像

    docker build -f dockerFile02 -t mzw/centos:1.2 .
    
  • 运行容器

    docker run -it mzw/centos:1.2
    

查看目录结构,发现有刚刚设置的两个数据卷
在这里插入图片描述

  • 查看数据卷与宿主机的映射
    docker inspect 容器ID
    

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/261427.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙会成为安卓的终结者吗?

随着近期鸿蒙OS系统推送测试版的时间确定&#xff0c;关于鸿蒙系统的讨论再次升温。 作为华为自主研发的操作系统&#xff0c;鸿蒙给人的第一印象是具有颠覆性。 早在几年前&#xff0c;业内就开始流传鸿蒙可能会代替Android的传言。毕竟&#xff0c;Android作为开源系统&…

利用Python实现科学式占卜

一直以来&#xff0c;中式占卜都是基于算命先生手工实现&#xff0c;程序繁琐&#xff08;往往需要沐浴、计算天时、静心等等流程&#xff09;。准备工作复杂&#xff08;通常需要铜钱等道具&#xff09;&#xff0c;计算方法复杂&#xff0c;需要纯手工计算二进制并转换为最终…

Android13 编译ninja failed with: exit status 137

描述 现象很奇怪&#xff0c;主机是ubuntu 18.04&#xff0c; 内存有32G&#xff0c;并且系统中有两份Android13代码&#xff0c; 有一份编译正常&#xff0c;另外一份编译不正常&#xff0c;一度以为是因为下载源码不齐全导致&#xff0c;后面仔细看日志&#xff0c;原来是内…

深入理解指针(c语言)

目录 一、使用指针访问数组二、数组名的理解1、数组首元素的地址2、整个数组 三、一维数组传参的本质四、冒泡排序五、二级指针六、指针数组 一、使用指针访问数组 可以使用指针来访问数组元素。例如&#xff0c;可以声明一个指针变量并将其指向数组的第一个元素&#xff0c;然…

c语言经典测试题2

1.题1 我们来思考一下它的结果是什么&#xff1f; 我们来分析一下&#xff1a;\\是转义为字符\&#xff0c;\123表示的是一个八进制&#xff0c;算一个字符&#xff0c;\t算一个字符&#xff0c;加上\0&#xff0c;应该有13个&#xff0c;但是strlen只计算\0前的字符个数。所以…

Vue3引用第三方模块报错Could not find a declaration file for module ***.

在引用第三方的组件时候报错如下 原因是&#xff1a;该组件可能不是.ts文件而是.js文件 解决方案&#xff1a; 1.在Src的目录下面新建一个文件为shims-vue.d.ts的文件 2.文件内容为 declare module xxx&#xff0c;xxx就是你报错的模块 例如我这样 declare module vue3-pu…

Gitlab 设置页面语言为简体中文

1.用户登录&#xff0c;点击头像&#xff0c;再点击Preferences&#xff08;偏好设置&#xff09; 2.向下滑动&#xff0c;找到 Localization&#xff08;本地化&#xff09;&#xff0c;进行修改&#xff0c;并保存 3.刷新页面&#xff0c;就更改成简体中文了

药厂常用实验室耗材PFA药勺耐腐蚀透明长柄取样勺

实验室取用药品或少量样品时&#xff0c;常用到药匙&#xff0c;PFA药匙分固体药匙和液体药匙两种&#xff0c;别名也叫量勺、药勺、搅拌勺、样品勺、取样勺等。 PFA取样勺&#xff0c;常用于高要求实验条件下取用少量粉末微量颗粒等。可根据您的需要定制各种尺寸、规格的四氟…

【深度学习笔记】回归与分类

回归与分类 1 Logistic 回归 定义 目标&#xff1a;给定数据点 X ( n ) ∈ R m X^{(n)}∈R^m X(n)∈Rm 和相应标签 t ( n ) ∈ Ω t^{(n)}∈Ω t(n)∈Ω &#xff0c;找到一个映射 f : R m → Ω f:R^m→Ω f:Rm→Ω 回归的目的是预测一个连续的数值变量&#xff0c;如果Ω…

jenkins的nmp install命令无法下载包

问题&#xff1a;在jenkin的流水线脚本中执行到&#xff1a;npm install命令后无法下载前端依赖包 1、进到jenkins的工作目录&#xff0c;一般在底层为/var/lib/jenkins/workspace/任务名称 cd /var/lib/jenkins/workspace/xkc处理方式&#xff1a; # 查看镜像源 npm config …

Redis篇----第十二篇

系列文章目录 文章目录 系列文章目录前言一、一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set 他们最多能存放多少元素二、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?三、Redis 最适合的场景?前言 前些天发现了一…

游戏配置二级缓存一致性问题解决方案

游戏服务器进程在启动的时候&#xff0c;一般会把所有策划配置数据加载到内存里&#xff0c;将主键以及对应的记录存放在一个HashMap容器里&#xff0c;这称为一级缓存。部分功能可能还需要缓存其他数据&#xff0c;这些称为二级缓存。举个例子&#xff0c;对于如下的玩家升级表…

如何删除PS最近使用项

ps删除最近文件列表 点击菜单栏中文件&#xff0d;>最近打开文件&#xff0d;>清除最近的文件列表

【OpenSSH+Jenkins搭建项目自动化部署】

OpenSSHJenkins搭建项目自动化部署 一、Windows安装OpenSSH1.下载2.解压3.安装4.启停服务5.SSH免密登录 二、Jenkins安装1.下载2.安装启动3.登录 三、项目自动化部署1.SSH配置2.项目配置3.权限控制 一、Windows安装OpenSSH 1.下载 https://github.com/PowerShell/Win32-0penS…

如何修改docker容器的端口映射

要修改 Docker 容器的端口映射&#xff0c;你需要停止并删除现有的容器&#xff0c;然后使用新的端口映射重新运行容器。以下是详细步骤&#xff1a; 停止容器&#xff1a; 使用 docker stop 命令停止正在运行的容器。替换 <container_id> 为你要停止的容器的 ID 或者容器…

SVN忽略已提交的文件(ignore,移出版本控制)

本文适用于已安装TortoiseSVN客户端的同学。 1、右键点击要忽略的文件夹或文件&#xff0c;鼠标移到“TortoiseSVN”&#xff0c;找到“Unversion and add to ignore list”&#xff0c;选择文件夹&#xff0c;弹出提示框确认忽略。 2、设置完忽略文件后&#xff0c;还需要做…

微信小程序uniapp校园在线报修系统维修系统java+python+nodejs+php

管理员的主要功能有&#xff1a; 1.管理员输入账户登陆后台 2.个人中心&#xff1a;管理员修改密码和账户信息 3.用户管理&#xff1a;对注册的用户信息进行删除&#xff0c;查询&#xff0c;添加&#xff0c;修改 4.维修工管理&#xff1a;对维修工信息进行添加&#xff0c;修…

合金电阻器与新兴技术的融合:引领电子行业的下一波浪潮?

随着电子行业以前所未有的速度向创新迈进&#xff0c;合金电阻器与尖端技术的集成证明了电子元件的动态特性。本文探讨了合金电阻器与新兴技术的融合&#xff0c;开创了功能化、小型化和效率化的新时代。 1. 与IoT&#xff08;物联网&#xff09;集成&#xff1a; 合金电阻器在…

Spring IoC容器详解

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 基本概念 Spring IoC容器是Spring框架的核心组件&#xff0c;它实现了控制反转&#xff08;Inversion of Control&#xff0c;IoC&#xff09;的设计原则。IoC是一种编程思…

IDEA2023.3.4开启SpringBoot项目的热部署【简单明了4步操作】

添加devtools依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional> </dependency>IDEA开启自动编译 …