在docker文档的docker映像修剪中,可以使用-a标志来
删除所有未使用的图像,而不仅仅是悬挂的图像
后来
删除所有悬挂的图像。如果指定了-a,也将删除所有未被任何容器引用的图像。
有人能给我解释一下什么是悬空图像吗?悬空图像和未使用的图像有什么区别?
在docker文档的docker映像修剪中,可以使用-a标志来
删除所有未使用的图像,而不仅仅是悬挂的图像
后来
删除所有悬挂的图像。如果指定了-a,也将删除所有未被任何容器引用的图像。
有人能给我解释一下什么是悬空图像吗?悬空图像和未使用的图像有什么区别?
当前回答
在图片截图中,“none”名称为悬空图片。 悬空图像仅仅意味着您已经创建了图像的新构建,但是没有给它一个新名称。所以旧的图像就变成了“悬空图像”。这些旧映像是那些没有标记的,并且在运行docker映像时在其名称上显示“”的映像。
Docker系统修剪-a,它将删除未使用的和悬空的图像。因此,容器中使用的任何映像,无论它们是已经退出还是正在运行,都不会受到影响。
其他回答
悬垂图像是与任何标记图像没有关系的层。它们不再起作用,而是消耗磁盘空间。
未使用的映像是未分配或未在容器中使用的映像。
要列出悬挂的图像:
docker images -f dangling=true
悬垂图像是未标记的图像。下面的命令给出一个悬空图像列表。
docker images --filter "dangling=true"
Docker图像修剪删除所有悬空图像。
未使用的图像是具有标记但目前未用作容器的图像。将来你可能需要它,也可能不需要。
Docker映像修剪-删除所有悬空的和未使用的映像。
您通常不希望在某个时间之前删除所有未使用的映像。因此,最好是用过滤器去除。
删除Docker镜像文件
未使用的映像意味着它没有被分配或在容器中使用。例如,当运行docker ps -a时,它将列出所有退出和当前运行的容器。在任何容器中显示的正在使用的任何图像都是“已使用图像”。
另一方面,悬垂的图像只意味着您已经创建了图像的新构建,但没有给它一个新名称。所以旧的图像就变成了“悬空图像”。这些旧映像是没有标记的,并且在运行docker映像时在其名称上显示“<none>”。
当运行docker系统prune -a时,它将删除未使用和悬挂的图像。因此,容器中使用的任何映像,无论它们是已经退出还是正在运行,都不会受到影响。
最安全,最简单的方法来清理悬空图像
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi
Docker映像由多个层组成。悬垂图像,是与任何标记图像没有关系的层。它们不再起作用,而是消耗磁盘空间。
注意:我建议不要在生产中使用prune,因为docker系统prune -a会删除所有没有被容器引用的图像,这样我们就不能回滚到上一个版本。
要通过添加过滤器标志来列出悬浮图像,-f的值为悬挂=true,适用于docker图像。
列出悬挂图像
docker images -f dangling=true
移除悬空图像
docker rmi $(docker images -f dangling=true -q)
OR
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi
当我们运行任何cron作业来删除悬垂的东西时,使用上述方法来确保作业成功运行。就像在Jenkins中,如果我们运行一个带有以下命令的自由风格作业,即使机器中不存在悬垂的东西,作业也永远不会失败。
这是最安全、最简单的方法来清除悬浮图像,并收回磁盘空间供使用。
docker中的图像由sha256摘要引用,通常称为图像id。该摘要是映像存在于docker主机上所需的全部内容。通常,你会有指向这些摘要的标签,例如标签'busybox:latest'当前指向图像id c30178c523…在我的系统上。
多个标记可以指向同一个图像,并且任何标记都可以更改为指向不同的id,例如,当您提取busybox:latest的新副本或构建应用程序映像的新版本时。
悬空图像是没有标签的图像,也没有指向它们的子图像(例如,使用不同版本的FROM busybox:latest的旧图像)。它们之前可能有一个指向它们的标签,后来这个标签改变了。或者他们可能从来没有标签(例如,不包括标签选项的docker构建的输出)。
只要没有引用旧映像id的容器仍在运行,删除这些容器通常是安全的。保留它们的主要原因是为了构建缓存。
此外,您可能下载了容器(包括已停止的容器)当前未使用的映像。这些图像与悬空图像完全不同,只要你不打算在将来使用它们,或者不介意在需要它们时下载另一个副本,删除它们可能是安全的。