docker学习笔记-05:DockerFile解析

1、DockerFile是什么docker

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

二、构建三步骤:bash

手动编写一个dockerfile文件,而后直接docker build命令执行,得到一个自定义的镜像,最后 docker run 建立一个容器实例。运维

 

2、centos的DockerFileui

FROM scratch          # centos的祖先
MAINTAINER The CentOS Project <cloud-ops@centos.org>        # 做者的名字和邮箱
ADD c68-docker.tar.xz /         # centos压缩包
LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="2016-06-02"

# 默认的命令,因此在启动容器时可加可不加
CMD ["/bin/bash"]

 

3、DockerFile构建过程解析spa

一、DockerFile内容基础知识:code

(1)每条保留字指令都必须为大写字母且后面要跟随至少一个参数blog

(2)指令从上到下,顺序执行继承

(3)#表示注释开发

(4)每条指令都会建立一个新的镜像层,并对镜像进行提交

二、docker执行DockerFile的大体流程:

(1)docker从基础镜像运行一个容器

(2)执行一条指令并同时对容器进行修改

(3)执行相似docker commit的操做提交一个新的镜像层

(4)docker再基于刚提交的镜像运行一个新容器

(5)执行DockerFile中的下一条指令直到全部指令都执行完成

三、从应用软件的角度来看,DockerFile、Docker镜像和Docker容器分别表明了软件的三个不一样阶段

  • DockerFile是软件的原材料
  • Docker镜像是软件的交付品
  • Docker容器则能够认为是软件的运行态

  DockerFile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署和运维,三者缺一不可。

四、关系:DockerFile----build---->Docker镜像-----run---->Docker容器

 

4、DockerFile体系结构(保留字指令)

一、FROM  基础镜像,也就是当前新镜像是基于哪一个基础镜像的

二、MAINTAINER  镜像做者的姓名和邮箱地址

三、RUN  构建镜像的过程当中执行一个具体的命令

四、EXPOSE  当前容器实例对外暴露的端口

五、WORKDIR  制定在建立容器后,终端默认登陆的进来工做目录

六、ENV  用来在构建镜像过程当中设置环境变量  如:ENV MY_PATH /usr/mytest  变量名为 MY_PATH,变量值为 /usr/mytest

七、ADD  将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

八、COPY  相似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<原路劲>的文件/目录复制到新的一层的镜像内的<目标路劲>位置  

九、VOLUME  容器数据卷,用于数据保存和持久化工做

十、CMD  指定一个容器启动时要运行的命令,DockerFile中能够有多个CMD指令,但只有最后一个生效。且若是docker run 后面有命令参数,那么CMD的会被docker run后面的替换掉

十一、ENTRYPOINT  同CMD相似,也指定一个容器启动时要运行的命令,但不一样在于,若是docker run 后面由命令参数,那么不会覆盖,而是追加

十二、ONBUILD  当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD被触发。

相关文章
相关标签/搜索