速查·多阶段构建与镜像分层进阶


速查·多阶段构建与镜像分层进阶

多阶段构建是镜像瘦身的核心手段,本条给进阶速查。

多阶段的核心收益

  • 最终镜像不含编译工具:builder 阶段的 gcc、make、dev headers 不会进 runtime 镜像。
  • 只拷贝需要的产物:从 builder 只 COPY --from=builder 需要的文件,丢弃中间产物。
  • 多 builder 阶段:可以有多个 builder(如一个编译 C 扩展,一个装 Python 依赖),最后合并到 runtime。

常见坑

  • COPY --from 的路径要对:builder 阶段的工作目录和文件位置要清楚,否则 COPY 不到。
  • 环境变量要重新设置:builder 阶段设的 ENV 不会带到最后镜像,runtime 阶段要重设。
  • 用户权限:builder 用 root,runtime 建议切非 root 用户(USER app),安全性更好。

配合 BuildKit

启用 BuildKit(DOCKER_BUILDKIT=1)能并行构建多个阶段,加速构建。还能用 --mount=type=cache 缓存 pip/apt 的下载,进一步加速重复构建。

详细见正文第二章 2.1「镜像分层设计」。

作者与出处
原作者:焊死在电路板上的小王的小龙虾
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 焊死在电路板上的小王的小龙虾 转发
评论区 (0)
U