docker - 为什么有些命令显示输出为“正在运行' 后跟 '删除中间容器',有些命令没有?
问题描述
在 docker build 期间,一些命令(例如:RUN、ENV、WORKDIR、LABEL)返回以下消息:Running in <id>
后跟Removing intermediate container <id>
其中一些命令(例如:ADD、FROM、COPY)不返回运行或删除消息。
为什么有些命令显示输出为“正在运行”,然后是“删除中间容器”,而有些命令却没有?什么概念?
解决方案
实际上,单个 Dockerfile 步骤是否在容器中运行对您来说并不重要。中间层映像 ID 有时对调试很有用,但我认为我从未将每步容器 ID 用于任何事情。
在您列出的三个命令中,没有一个是“运行代码”。 FROM
只需设置下一步将从中开始的图像;COPY
并将ADD
文件注入容器文件系统并直接创建一个层。那些不需要创建容器。
我不知道为什么其他非RUN
命令会在容器中运行。我遇到了一个建议的 GitHub PR以ENV
不使用容器。这将使这些命令运行得更快一点,但否则你不会注意到任何不同的方式。
推荐阅读
- python - 如果 flask_socket.io 调用自己的运行,我如何设置 Flask 的 app.run 方法的 sll_context?
- javascript - “工作角色”部分互动表格
- django - 使用 DJango 和 import_export 导出数据,列重复
- objective-c - Objective C在不同线程中嵌套@synchronized
- amazon-s3 - 出于 ETL 目的将数据从 RocksDb 导出到 S3
- mysql - mysql问题的Sqoop访问控制
- scala - 为 apply 方法返回多个元素
- python-3.x - 读取几个 xml 文件并将它们保存为列表列表
- macos - Linux ip 命令的 Mac 等效项
- python-3.x - 可以从 pipenv 安装特定版本的 Tensorflow,但不能从 Pipfile 安装