在docker image prune的docker 文档中,可以使用-a标志来
删除所有未使用的图像,而不仅仅是悬空的图像
然后
删除所有悬空的图像。如果指定了-a,还将删除所有未被容器引用的图像。
有人可以向我解释什么是悬空图像,悬空图像和未使用的图像有什么区别?
prune
不建议在生产中使用
在docker image prune的docker 文档中,可以使用-a标志来
删除所有未使用的图像,而不仅仅是悬空的图像
然后
删除所有悬空的图像。如果指定了-a,还将删除所有未被容器引用的图像。
有人可以向我解释什么是悬空图像,悬空图像和未使用的图像有什么区别?
prune
不建议在生产中使用
Answers:
未使用的图像表示尚未在容器中分配或使用它。例如,在运行时docker ps -a
-它会列出您所有退出的和当前正在运行的容器。显示在任何容器内使用的任何图像均为“已使用图像”。
另一方面,悬空的图像仅表示您已创建图像的新版本,但未为其指定新名称。因此,您拥有的旧图像成为“悬空图像”。这些旧图像是未加标签的,并<none>
在您运行时在其名称上显示“ ” docker images
。
运行时docker system prune -a
,它将删除未使用和悬空的图像。因此,容器中正在使用的任何图像,无论它们已经退出还是正在运行,都不会受到影响。
docker system prune --all --filter "until=24h"
还会保留最新图像
docker system prune -a
删除了停止的容器。因此,它也应该删除仅与退出的容器关联的图像,对吗?
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi
Docker映像由多层组成。悬空图像是与任何标记图像都没有关系的图层。它们不再用于目的并且消耗磁盘空间。
注意:我建议不要
prune
在生产环境中使用,因为docker system prune -a
它将删除容器未引用的所有图像,因此我们无法回滚到以前的版本。
要列出通过将过滤器标志,悬空图像-f
用的一个值dangling=true
到docker images
。
docker images -f dangling=true
docker rmi $(docker images -f dangling=true -q)
要么
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi
当我们运行任何cron作业以删除晃来晃去的东西时,请使用以上内容确保作业成功运行。就像在詹金斯(Jenkins)中一样,即使计算机中不存在任何悬空的东西,如果我们运行带有beloow commad作业的自由样式作业也不会失败。
这是清理悬空图像并取回磁盘空间以供使用的最安全,最简单的方法。
docker images
no 的图像被悬挂。如何查看尺寸?另外,名称和标签为“ none”的docker images -a
图像是中间图像。是否可以删除它们以及如何检查其大小?
docker中的图像由sha256摘要引用,通常称为图像ID。该摘要是映像在Docker主机上存在所需要的全部。通常,您将具有指向这些摘要的标签,例如,在我的系统上,标签busybox:latest current指向图像ID c30178c523...。多个标签可以指向同一图像,并且可以将任何标签更改为指向不同的ID,例如,当您拉出busybox:latest的新副本或构建应用程序图像的新版本时。
悬空图像是指没有标签且没有子图像(例如使用的不同版本的旧图像)的图像FROM busybox:latest
。他们之前可能有一个指向他们的标签,后来又更改了该标签。或者他们可能从未有过标签(例如,docker build
不包含标签选项的输出)。只要没有容器仍在运行且引用旧映像ID的容器,通常就可以安全地删除它们。保留它们的主要原因是出于构建缓存的目的。
此外,您可能已经下载了容器(包括已停止的容器)当前不使用的图像。这些与悬空的图像完全不同,只要您将来不打算使用它们或在需要时不介意下载其他副本,就可以安全地删除它们。
docker images -a
)也称为悬挂图像吗?是否可以通过docker image prune清除它们?
悬空图像是未标记图像。以下命令提供了悬空图像列表。
docker images --filter "dangling=true"
docker image prune
删除所有悬空的图像。
未使用的图像是具有标签但当前未被用作容器的图像。您将来可能会也可能不需要。
docker image prune -a
删除所有悬空和未使用的图像。
通常,您不希望在一段时间之前删除所有未使用的图像。因此,最好用过滤器去除。
docker image prune -f --filter "until=6h"
docker image prune -a -f --filter "until=6h"
还会删除悬空的图像吗?
docker image prune -f --filter "until=6h"
-由于没有-a-那么它将如何删除未使用的图像?
我在这里看到了有用的命令(别名),用于删除悬空的图像,这由andyneff提供:https : //forums.docker.com/t/how-to-delete-cache/5753 :
alias docker_clean_images='docker rmi $(docker images -a --filter=dangling=true -q)'
alias docker_clean_ps='docker rm $(docker ps --filter=status=exited --filter=status=created -q)'
第一个清除所有悬空的图像。这对于删除多个构建遗留的中间图像很有用。第二个是用于删除停止的容器。这些是我用于日常维护的别名
如果要删除所有缓存,则首先必须确保已停止并删除所有容器,因为不能删除容器正在使用的映像。所以类似
docker kill $(docker ps -q) docker_clean_ps docker rmi $(docker images
-a -q)
这将杀死并删除缓存中的所有图像。
在图像屏幕快照中,“ none”名称是悬空图像。悬空的图像仅表示您已创建图像的新版本,但未为其指定新名称。因此,您拥有的旧图像成为“悬空图像”。这些旧映像是未标记的映像,在您运行docker映像时其名称上显示“”。
docker system prune -a
,它将删除未使用和悬空的图像。因此,容器中正在使用的任何图像,无论它们已经退出还是正在运行,都不会受到影响。