Docker:什么是摇摆的图像,什么是未使用的图像?

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

删除所有未使用的图像,不只是悬挂的图像

然后

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

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

未使用的图像意味着它尚未在容器中分配或使用。 例如,在运行docker ps -a ,它会列出所有已退出和当前正在运行的容器。 显示在任何容器内的任何图像都是“使用的图像”。

另一方面,悬挂的图像意味着你已经创build了图像的新版本,但没有给出一个新的名字。 所以你的旧图像就变成了“摇摆的图像”。 那些旧的图像是没有标记的,当你运行docker images时在它的名字上显示“”。

当运行docker系统修剪-a时,它将删除未使用和悬挂的图像。 因此,在容器中使用的任何图像,不pipe是已经退出还是正在运行,都不会受到影响。

docker中的图像被sha256摘要引用,通常被称为图像ID。 该摘要是您需要的图像存在于docker主机上。 通常情况下,你将有标签指向这些摘要,例如标签busybox:最新的当前指向图像ID c30178c523 …在我的系统上。 多个标签可以指向相同的图像,任何标签可以改变指向一个不同的ID,例如,当你拉一个busybox的新副本:最新或build立一个新版本的应用程序图像。

摇摇晃晃的图像是没有标签的图像,并且没有子图像(例如使用不同版本的FROM busybox:latest的旧图像FROM busybox:latest ),指向它们。 他们之前可能有一个标签指向他们,标签后来改变了。 或者他们可能从来没有一个标签(例如,不包含标签选项的docker build的输出)。 这些通常是安全的,只要没有容器仍在运行,引用旧的图像ID。 保持它们的主要原因是为了构buildcaching目的。

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