首页 > 解决方案 > 为什么有些命令显示输出为“正在运行' 后跟 '删除中间容器',有些命令没有?

问题描述

在 docker build 期间,一些命令(例如:RUN、ENV、WORKDIR、LABEL)返回以下消息:Running in <id>后跟Removing intermediate container <id>

其中一些命令(例如:ADD、FROM、COPY)不返回运行或删除消息。

为什么有些命令显示输出为“正在运行”,然后是“删除中间容器”,而有些命令却没有?什么概念?

标签: dockerdocker-image

解决方案


实际上,单个 Dockerfile 步骤是否在容器中运行对您来说并不重要。中间层映像 ID 有时对调试很有用,但我认为我从未将每步容器 ID 用于任何事情。

在您列出的三个命令中,没有一个是“运行代码”。 FROM只需设置下一步将从中开始的图像;COPY并将ADD文件注入容器文件系统并直接创建一个层。那些不需要创建容器。

我不知道为什么其他非RUN命令会在容器中运行。我遇到了一个建议的 GitHub PRENV不使用容器。这将使这些命令运行得更快一点,但否则你不会注意到任何不同的方式。


推荐阅读