在docker构建过程中,一些命令(例如:RUN, ENV, WORKDIR, LABEL)返回以下信息。Running in <id>
后面是 Removing intermediate container <id>
而有些命令(例如:ADD、FROM、COPY)既不返回运行信息,也不返回删除信息。
为什么有些命令的输出显示为 "Running in",然后是 "Removing intermediate container",而有些命令却没有?这是什么概念?
作为一个实际问题,单个Dockerfile步骤是否在容器中运行对你来说并没有多大关系。 中间层映像ID偶尔会对调试有用,但我不认为我曾经使用过每个步骤的容器ID来做任何事情。
在你列出的三个命令中,没有一个是 "运行代码 "的。 FROM
只是设置了下一步要开始的映像。COPY
还有 ADD
将文件注入容器文件系统,直接创建一个层。 这些不需要创建容器。
我不知道为什么其他的非RUN
命令会在一个容器中运行。 我遇到了 一个拟议的GitHub公关 以使 ENV
不使用容器。 这将使这些命令的运行速度快一点点,但除此之外,你不会注意到任何不同的方式或其他。