Docker
构建过程
Docker 守护进程逐条执行 Dockerfile 中的指令, 然后将每一条指令执行的结果提交到新的镜像 (如果有必要的话), 也就是每一条指令执行完如果有结果需要写到镜像中, 则会在原来镜像的基础上创建新的一层, 当构建完成后输出新镜像的 ID. 最终, Docker 守护进程自动清理被发送过来的本次构建的上下文数据
注意每一个指令都是独立执行的, 每一条指令都会创建新的一层, 所以RUN cd /tmp对下一条指令没有任何影响. 由于每一条指令都会创建新的一层, 如果 Dockerfile 指令过多, 会导致构建的镜像体积过大, 所以尽量减少不必要的指令, 或者将多条命令合并到一条指令中
- 发送 context 上下文中的文件到 Docker 守护进程
- 进行 Dockerfile 文件内容的预校验
- 逐条执行 Dockerfile 中的指令
- 最终生成镜像
镜像瘦身
精简层数
- RUN指令合并
- 多阶段构建
精简每一层大小
- 使用合适的基础镜像 (首选 alpine)
- 删除RUN的缓存文件
信息查看
shell
# 状态查看
docker stats
# 底层信息
docker inspect