首页 > 解决方案 > 在 docker 中,为什么我在构建图像时看不到任何中间图像?

问题描述

码头工人文档说:

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

因此,针对上面的引用,我的问题如下:

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

谢谢。

标签: dockerdockerfile

解决方案


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

  2. docker images不显示没有标签但在其上构建了其他图像的图像。 docker images -a将显示一切。不过,这通常是一个实现细节,而一长串<none>图像往往更容易造成混淆。

    另请注意,中间图像 ID 在执行每个步骤时都会被打印出来docker build,您还应该能够通过docker history. docker run如果您可以告诉某个步骤的输入不正确,但您不确定原因,则在中间图像上运行是一种非常有用的调试技术。


推荐阅读