速查·镜像瘦身与体积优化实战


文档摘要

速查·镜像瘦身与体积优化实战 一个动辄 20GB 的镜像,拉取慢、存储贵、上线慢。本条给镜像瘦身的实战速查。 瘦身手段优先级 多阶段构建(最有效):用 builder 阶段编译,runtime 阶段只拷贝产物。能把镜像从 GB 级降到百 MB 级。 选更小的基础镜像: 比 小很多, 更小但有兼容性问题(glibc vs musl),大模型场景慎用 alpine。 清理缓存和残留:包管理器缓存、pip 缓存、临时文件,装完就删。 不要把数据和权重打进镜像:模型权重用挂载或对象存储,别 bake 进镜像——一个 7B 模型权重 13GB,打进镜像就是 13GB 的浪费。

速查·镜像瘦身与体积优化实战

一个动辄 20GB 的镜像,拉取慢、存储贵、上线慢。本条给镜像瘦身的实战速查。

瘦身手段优先级

  1. 多阶段构建(最有效):用 builder 阶段编译,runtime 阶段只拷贝产物。能把镜像从 GB 级降到百 MB 级。
  2. 选更小的基础镜像python:3.11-slimpython:3.11 小很多,alpine 更小但有兼容性问题(glibc vs musl),大模型场景慎用 alpine。
  3. 清理缓存和残留:包管理器缓存、pip 缓存、临时文件,装完就删。
  4. 不要把数据和权重打进镜像:模型权重用挂载或对象存储,别 bake 进镜像——一个 7B 模型权重 13GB,打进镜像就是 13GB 的浪费。

多阶段构建示例

# builder 阶段 FROM python:3.11-slim AS builder WORKDIR /build COPY requirements.txt . RUN pip install --user --no-cache-dir -r requirements.txt # runtime 阶段(最终镜像) FROM python:3.11-slim COPY --from=builder /root/.local /root/.local COPY app/ /app/ WORKDIR /app ENV PATH=/root/.local/bin:$PATH CMD ["python", "main.py"]

runtime 阶段只拷贝了 pip 安装的包和 app 代码,没有 builder 阶段的编译工具和缓存,镜像大幅缩小。

检查镜像体积

docker history <image> 查看每一层的大小,找出体积大户。用 dive 这个工具能可视化分析镜像每层内容。

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


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