docker Dockerfile镜像生成
Dockerfile
Dockerfile就是用来构建镜像的文件,有一系列命令和参数组成,docker会根据里面的内容进行镜像的build
1.手动新建一个Dockerfile文件,必须符合file规范
2.然后添加自己的内容
3.有了这个文件之后,就可以docker build镜像,然后docker run容器 会生成数据卷共享目录
centos镜像的Dockerfile文件
scratch :所有镜像文件的祖先类
MAINTAINER 作者加邮箱
ADD
LABEL 标签,相当于描述
CMD cmd命令
Dockerfile解析过程
1.Dockerfile的内容
(1)每条保留字指令都必须为大写字母且后面要跟最少一个参数
(2)指令从上到下执行
(3)#表示注释
(4)每条指令都会创建一个新的镜像层,并对镜像进行提交
2.docker执行Dockerfile的大致流程
(1)docker从基础镜像运行一个容器
(2)执行一条指令对容器进行修改
(3)执行类似docker commit 的操作提交这次修改
(4)docker再基于刚提交的镜像运行一个新容器
(5)执行Dockerfile中的吓一条指令,依次循环,直到命令执行完成
小结
从应用软件的角度看,Dockerfile与Docker镜像还有Docker容器分别代表三个不同的阶段
* Dockerfile是原材料,制作步骤
* Docker镜像是软件的交付品
* Docker容器则是软件的运行态
Dockerfile面向开发,docker镜像成为交付标准,docker容器则涉及部署和运维,三者缺一不可,合力中档docker体系的基石
Dockerfile保留字指令
FROM:基础镜像,当前的镜像的基础镜像
MAINTAINER 镜像的作者和邮箱
RUN 容器构建时需要执行的指令
EXPOSE 当前勇气对外暴露出的端口
WORKDIR 指定在创建容器后,终端默认登录进来的目录,一个落脚点
ENV 用于定义构建容器时期的环境变量
ADD 拷贝加解压缩 强大与COPY 在宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY 类似ADD拷贝文件和目录到镜像中,将从构建上下文目录中<源路径>的文件或目录复制到新的一层镜像内的<目标路径>未知 (1)COPY src dest (2)COPY ["src","dest"]
VOLUME 容器数据卷,用于数据保存和持久化工作
CMD 指定一个容器启动时运行的命令 可以有多个CMD命令,但是只有最后一个会生效,CMD 会被docker run 之后的参数替换掉
ENTRYPOINT 指定一个容器启动时运行的命令 和CMD一样 但是不会覆盖最后一条命令,run后面跟的参数会追加到命令里面,
ONBUILE 当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild命令会触发