Docker:什么是悬空图像,什么是未使用的图像?

her*_*erm 120 docker

docker image prune的docker 文档中,可以使用-a标志

删除所有未使用的图像,而不仅仅是悬空图像

然后

删除所有悬空图像.如果指定了-a,还将删除未被任何容器引用的所有图像.

有人可以向我解释悬挂图像是什么,悬空和未使用图像之间有什么区别?

Ser*_*rey 119

未使用的图像表示尚未在容器中分配或使用它.例如,在运行时docker ps -a- 它将列出所有已退出和当前正在运行的容器.在任何容器内使用的任何图像都是"使用过的图像".

另一方面,悬空图像只是意味着您已经创建了图像的新构建,但没有给出新名称.所以你所拥有的旧图像就变成了"悬空图像".那些旧图像是未标记的图像,并<none>在运行时在其名称上显示" " docker images.

运行时docker system prune -a,它将删除未使用和悬空的图像.因此,容器中使用的任何图像,无论是已退出还是当前正在运行,都不会受到影响.

  • `docker system prune --all --filter"until = 24h"`保留最近的图像 (5认同)

Jin*_*alu 31

清理悬空图像的最安全,最简单的方法

Docker图像由多个图层组成.悬空图像是与任何标记图像无关的图层.它们不再用于目的并占用磁盘空间.

为通过将过滤器标志,列出悬空图像prune用一个值docker system prune -a-f.

列出悬空图像

docker images -f dangling = true

删除悬空图像

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

这是清除悬空图像并将我们的磁盘空间恢复使用的最安全,最简单的方法.

请注意:dangling=true将删除容器未引用的所有图像,我们无法通过该图像返回到先前版本.在生产而不是创建新图像时,我们使用之前正在工作的先前图像.

  • docker image prune 怎么样?文档说:“删除所有悬空图像。如果指定了 -a,还将删除任何容器未引用的所有图像。” https://docs.docker.com/engine/reference/commandline/image_prune/#related-commands (3认同)
  • @herm,从您引用的页面底部开始,“注意:在修剪删除任何内容之前,系统会提示您进行确认,但未向您显示可能被删除的内容列表”。我认为这个答案的重点是您可以获得一个悬空图像的列表,然后您明确指定要删除这些图像,而不是盲目地使用 prune 删除所有悬空图像。 (3认同)

Ven*_*tra 15

悬空图像未标记的图像。以下命令给出悬空图像的列表。

docker images --filter "dangling=true"
Run Code Online (Sandbox Code Playgroud)

docker image prune删除所有悬空图像。

未使用的图像是具有标签但当前未用作容器的图像。您将来可能需要也可能不需要它。

docker image prune -a删除所有悬空和未使用的图像。

您通常不想在某个时间之前删除所有未使用的图像。因此最好用过滤器去除。

docker image prune -a -f --filter "until=6h"


BMi*_*tch 12

docker中的图像由sha256摘要引用,通常称为图像ID.该摘要是您在docker主机上存在图像所需的全部内容.通常,您将拥有指向这些摘要的标签,例如标签busybox:我系统上的最新当前点到图像ID c30178c523 .... 多个标签可以指向同一图像,任何标签都可以更改为指向不同的ID,例如,当您提取busybox的最新副本时:最新或构建应用程序映像的新版本.

悬空图像是没有标签的图像,并且没有FROM busybox:latest指向它们的子图像(例如,使用不同版本的旧图像).他们之前可能有一个标记指向它们,并且该标记后来发生了变化.或者他们可能从未有过标签(例如,docker build不包括标签选项的输出).只要没有仍在运行的容器引用旧映像ID,通常可以安全地删除它们.保持它们的主要原因是用于构建缓存目的.

此外,您可能已下载容器当前未使用的图像(包括已停止的容器).这些与悬空图像完全不同,只要您不打算在将来使用它们或者在您需要时不介意下载另一个副本,可以安全删除.


小智 10

悬空图像是与任何标记图像无关的图层。它们不再有任何用途并消耗磁盘空间。

未使用的映像是尚未在容器中分配或使用的映像。

列出悬空图像

docker images -f dangling=true
Run Code Online (Sandbox Code Playgroud)