在docker中,为什么在构建映像时看不到任何中间映像?

时间:2019-06-04 07:10:02

标签: docker dockerfile

码头工人文档说:

  

Docker守护程序逐一运行Dockerfile中的指令,如有必要,将每个指令的结果提交到新映像,然后最终输出新映像的ID。 Docker守护程序将自动清理您发送的上下文。

因此,根据上面的引用,我的问题如下:

  1. 何时需要将一条指令的结果提交到新图像?
  2. 如果生成了新图像,为什么在完成构建过程时看不到除最终图像以外的任何新图像?

谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 作为Dockerfile作者,您无需手动提交任何内容。几乎每条Dockerfile指令都会产生一个新层;我能想到的唯一例外是FROM(在多阶段构建中开始新阶段)和ARG(记录为“不持久到构建映像中”)。

  2. docker images不会显示没有标签的图像,但是会在其上构建其他图像。 docker images -a将显示所有内容。不过,通常这是一个实现细节,一长串<none>图片通常会引起混乱。

    还请注意,docker build在执行每个步骤时会打印出中间图像ID,您也应该能够通过docker history找到它们。如果您可以告诉输入某个步骤不正确,但是不确定为什么,那么在中间映像上运行docker run是一种非常有用的调试技术。