在docker文档的docker映像修剪中,可以使用-a标志来
删除所有未使用的图像,而不仅仅是悬挂的图像
后来
删除所有悬挂的图像。如果指定了-a,也将删除所有未被任何容器引用的图像。
有人能给我解释一下什么是悬空图像吗?悬空图像和未使用的图像有什么区别?
在docker文档的docker映像修剪中,可以使用-a标志来
删除所有未使用的图像,而不仅仅是悬挂的图像
后来
删除所有悬挂的图像。如果指定了-a,也将删除所有未被任何容器引用的图像。
有人能给我解释一下什么是悬空图像吗?悬空图像和未使用的图像有什么区别?
当前回答
未使用的映像意味着它没有被分配或在容器中使用。例如,当运行docker ps -a时,它将列出所有退出和当前运行的容器。在任何容器中显示的正在使用的任何图像都是“已使用图像”。
另一方面,悬垂的图像只意味着您已经创建了图像的新构建,但没有给它一个新名称。所以旧的图像就变成了“悬空图像”。这些旧映像是没有标记的,并且在运行docker映像时在其名称上显示“<none>”。
当运行docker系统prune -a时,它将删除未使用和悬挂的图像。因此,容器中使用的任何映像,无论它们是已经退出还是正在运行,都不会受到影响。
其他回答
未使用的映像意味着它没有被分配或在容器中使用。例如,当运行docker ps -a时,它将列出所有退出和当前运行的容器。在任何容器中显示的正在使用的任何图像都是“已使用图像”。
另一方面,悬垂的图像只意味着您已经创建了图像的新构建,但没有给它一个新名称。所以旧的图像就变成了“悬空图像”。这些旧映像是没有标记的,并且在运行docker映像时在其名称上显示“<none>”。
当运行docker系统prune -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)
这将杀死并删除缓存中的所有图像。
最安全,最简单的方法来清理悬空图像
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中,如果我们运行一个带有以下命令的自由风格作业,即使机器中不存在悬垂的东西,作业也永远不会失败。
这是最安全、最简单的方法来清除悬浮图像,并收回磁盘空间供使用。
在图片截图中,“none”名称为悬空图片。 悬空图像仅仅意味着您已经创建了图像的新构建,但是没有给它一个新名称。所以旧的图像就变成了“悬空图像”。这些旧映像是那些没有标记的,并且在运行docker映像时在其名称上显示“”的映像。
Docker系统修剪-a,它将删除未使用的和悬空的图像。因此,容器中使用的任何映像,无论它们是已经退出还是正在运行,都不会受到影响。
悬垂图像是未标记的图像。下面的命令给出一个悬空图像列表。
docker images --filter "dangling=true"
Docker图像修剪删除所有悬空图像。
未使用的图像是具有标记但目前未用作容器的图像。将来你可能需要它,也可能不需要。
Docker映像修剪-删除所有悬空的和未使用的映像。
您通常不希望在某个时间之前删除所有未使用的映像。因此,最好是用过滤器去除。
删除Docker镜像文件