docker - 我们需要在多阶段构建中进行清理吗?

标签 docker dockerfile

Dockerfile 中安装后清理资源是个好主意:

FROM ubuntu:trusty
RUN \
  apt-get update \
  && apt-get -y install gettext-base \
  && <commands>
  && apt-get clean \                       <--- CLEAN-UP
  && rm -rf /var/lib/apt/lists/*           <--- CLEAN-UP
CMD <command>

如果构建器是多阶段构建的一部分,是否还需要清理资源?或者 Docker 是否会删除多阶段构建的所有中间构建?例如,以下是否足够好?

FROM ubuntu:trusty as helper
RUN \
  apt-get update \
  && apt-get -y install gettext-base \
  && <commands>

FROM ubuntu:trusty
COPY --from=helper <from> <to>
CMD <command>

最佳答案

从您的“助手”中清理资源不是强制性的,您的最终图像中不会有前几个阶段的伪影。

您可以使用 docker history [OPTIONS] IMAGE 查看每个步骤的历史记录和大小

但是,为了节省计算机空间,建议将每个阶段保存为 docker 镜像。您可以使用 docker images 命令查看图像。

关于docker - 我们需要在多阶段构建中进行清理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48640478/

相关文章:

ubuntu - Docker:MeteorJS 安装了两次并出现一些警告

c++ - 为什么我可以在本地使用 CMake 提供的模块(特别是 CMakeDependentOption.cmake),但不能在 CI 或 Docker 上使用?

docker - 如何将 docker 镜像从私有(private)第三方注册表迁移到 Google Artifactory 注册表?

php - 带有 PHP 的 Docker Apache - 地址不可用:AH00056:连接到 [::]:80 上的监听器

java - 为什么在 docker 容器中执行命令与在 Dockerfile 中写入命令得到不同的结果?

docker - ENV、RUN 生成层、图像或容器? (理解文档问题)

amazon-web-services - 亚马逊 ECS "the referenced cluster was inactive"

linux - RUN chmod - 从 dockerfile 构建 docker 期间出错

angular - 使用我的 Angular 应用程序创建一个Docker容器

node.js - Nestjs在Container Start上退出