Skip to content
On this page

Docker

构建过程

Docker 守护进程逐条执行 Dockerfile 中的指令, 然后将每一条指令执行的结果提交到新的镜像 (如果有必要的话), 也就是每一条指令执行完如果有结果需要写到镜像中, 则会在原来镜像的基础上创建新的一层, 当构建完成后输出新镜像的 ID. 最终, Docker 守护进程自动清理被发送过来的本次构建的上下文数据

注意每一个指令都是独立执行的, 每一条指令都会创建新的一层, 所以RUN cd /tmp对下一条指令没有任何影响. 由于每一条指令都会创建新的一层, 如果 Dockerfile 指令过多, 会导致构建的镜像体积过大, 所以尽量减少不必要的指令, 或者将多条命令合并到一条指令中

  • 发送 context 上下文中的文件到 Docker 守护进程
  • 进行 Dockerfile 文件内容的预校验
  • 逐条执行 Dockerfile 中的指令
  • 最终生成镜像

镜像瘦身

精简层数

  • RUN指令合并
  • 多阶段构建

精简每一层大小

  • 使用合适的基础镜像 (首选 alpine)
  • 删除RUN的缓存文件

信息查看

shell
# 状态查看
docker stats

# 底层信息
docker inspect

Released under the MulanPSL2 License.