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----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被触发。