中间Docker映像是否占用磁盘空间?

时间:2020-01-23 02:21:38

标签: docker dockerfile

如果docker文件中有RUN命令,则它会创建一些中间映像。我的问题是这样的中间映像是否会占用硬盘驱动器的任何内存?如果是,docker build --rm应该足够了吗?

2 个答案:

答案 0 :(得分:2)

RUN不会创建中间的图像,但会创建中间的 layers / 容器

如果运行docker build --rm,这些容器将在生成后被删除,是的,它可以节省磁盘空间,但是每次重建相同的映像时都需要更多时间,因为它将创建这些层每次,因为它们没有被缓存。

编辑(感谢@Shashank V):默认情况下设置了--rm选项,因此不管是否设置都没有区别。

答案 1 :(得分:2)

是的,中间层占用磁盘空间,通常这是一件好事。这有利于图层的重用和快速构建。相反,您应该集中精力通过优化dockerfile来减少层数。您最终的Docker映像实际上是所有图层的组合。因此,除非您删除最终图像并且没有其他图像在使用这些图层,否则您将无法删除这些图层。

docker build --rm不会节省任何额外的磁盘空间。要了解原因,您应该知道docker build的工作原理-dockerfile中的每条指令(例如RUN)都会启动一个新容器,该指令完成后,该容器将退出并提交给映像。

docker build --rm删除了这些中间的容器--rm选项默认情况下为true,因此与docker build --rm相比,docker build的影响不大。由于某种原因,如果您想保留中间容器,则可以使用--rm=False将其关闭。

如果有任何其他图像未使用的图层,则可以将其删除。这些称为dangling层。您可以使用以下命令将其删除-

docker rmi $(docker images -f "dangling=true" -q)

相关问题