为什么我的 Docker 镜像这么大?通过‘dive’深入探究以找出膨胀原因

主要观点:使用 Docker 镜像进行 AI 项目有两大好处,即能正常运行模型且可精心打造(精简、快速构建和高效部署),需将不透明、大且黑的 Docker 镜像转变为更精细的,优化 Docker 镜像可提升开发速度、优化 CI/CD 管道、降低云成本和提升安全性。以简单的 BERT 分类器为例,其初始镜像 2.54GB 构建慢,通过诊断工具 dive 可发现主要贡献者为 pip 安装的库、python:3.10 基础镜像及 apt-get 安装 curl 等操作产生的不必要空间,同时提供了不同构建更精简容器的方法及相关 GitHub 仓库供实践。
关键信息

  • 优化 Docker 镜像的原因包括提升开发速度(如避免生产环境中长时间构建)、优化 CI/CD 管道(减少资源消耗和延迟)、降低云成本(节省存储和降低能耗)、提升安全性(减少攻击面)。
  • 以 BERT 分类器为例的初始镜像 2.54GB,构建慢,其成分包括 requirements.txt 中的各种依赖及有问题的 Dockerfile。
  • 诊断工具 dive 可查看 Docker 镜像的层信息,如基础镜像层、apt-get 安装层、pip 安装层等,能清晰展示各层的文件结构和空间占用情况。
    重要细节
  • docker image ls 可查看镜像大小,docker history 可查看镜像构建历史及各层大小贡献,dive 可深入探索 Docker 镜像层内容及发现缩小镜像大小的方法。
  • 在 BERT 分类器的 Dockerfile 中,COPY 操作可能因未使用.dockerignore 导致不必要的文件复制,增加镜像大小。
  • 提供了不同构建更精简容器的目录如 slim_image、multi_stage_build 等在 GitHub 仓库中,鼓励读者实践。
阅读 217
0 条评论