docker Dockerfile镜像生成

Dockerfile

Dockerfile就是用来构建镜像的文件,有一系列命令和参数组成,docker会根据里面的内容进行镜像的build

1.手动新建一个Dockerfile文件,必须符合file规范

2.然后添加自己的内容

3.有了这个文件之后,就可以docker build镜像,然后docker run容器 会生成数据卷共享目录

centos镜像的Dockerfile文件

scratch :所有镜像文件的祖先类

MAINTAINER 作者加邮箱

ADD

LABEL 标签,相当于描述

CMD cmd命令

docker Dockerfile镜像生成

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体系的基石

 

 

 

docker Dockerfile镜像生成

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命令会触发

docker Dockerfile镜像生成

 

docker Dockerfile镜像生成