读者须知
具备Docker基础知识,包括主机、客户端、镜像、容器、仓库,容器数据卷,Dockerfile编写以及docker网络等
本文不讨论虚机,旨在理清容器搭配流水线实现自动化部署的流程。从CI到CD。
意义
Dockerfile编写规范
1、指令必须大写;每一行只支持一条指令,每个指令可以携带多个参数。(每行指令对应镜像的一层,下载镜像的时候也是分层下载,这是 docker image 的核心: 联合文件系统。)
2、镜像名称:环境系统简称[服务名字]。
3、不能使用latest定义镜像标签:当镜像没有指定版本时,会默认使用latest标签。若此时镜像已更新,而latest标签不会指向之前的镜像而是指向新更新的镜像,这时镜像构建有可能失败。(使用中经常需要指向新更新的镜像,因此使用latest)
4、Dockerfile文件名: 这个跟build时指定的Dockerfile路径有关,默认以Dockerfile命名,build的时候 使用 . 自动寻找统计目录下的Dockerfile文件
5、不能进行更名操作,比如ADD软件压缩包,解压后执行mv更名操作,这样会导致镜像体积增加(原因还是在于镜像的分层原理)
6、RUN命令的要一次完成所有下载、解压、安装工作,以减少分层,并减少镜像体积。每行使用 &&\ 分开
7、EXPOSE 指定端口,多个端口要在一行写