docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker删除<none>/dangling/悬空镜像

docker如何删除<none>/dangling/悬空镜像

作者:petrel2015

这篇文章主要介绍了docker如何删除<none>/dangling/悬空镜像问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题

在docker build 的过程中会出现中间镜像。中间镜像不一定会自动删除。

会占用存储空间

可以通过以下命令查找悬空的镜像

docker images -f dangling=true

docker images更多用法可以看我的这篇文章

积少成多,悬空镜像还是很占用空间的。

具体占用系统哪块空间可以使用以下命令

docker image inspect <IMAGE_ID>

在GraphDriver中间,显示的就是在服务器中存储在哪里。

可以通过修改data-root来更换位置

解决

情况悬空镜像可以通过以下命令来清楚

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

也可以通过以下命令来删除。

docker image prune

但是如果加上-a会有一个问题,按照官方解释加上-a不仅会删除悬空镜像,还会删除未使用的镜像。

比如说我下载了某个镜像A,但是没有生成容器呢,或者容器已经删除了,这时这个镜像A就叫做未使用的镜像。

可以参考:

https://stackoverflow.com/questions/45142528/what-is-a-dangling-image-and-what-is-an-unused-image

https://stackoverflow.com/questions/57918513/what-are-dangling-images-in-docker-how-they-created-how-to-remove-them

删除过程中可能出现以下问题

Error response from daemon: conflict: unable to delete bcd6c489bc72 (must be forced) - image is being used by stopped container e34ee987580c

代表有容器正在使用,通过以下命令查看是哪个容器

docker ps -a |grep e34ee987580c

通过输出可以知道这个容器已经退出了,并且红框里这个命名规则是docker自动生成的,是一个“比较奇怪的组合”

可以放心删除

docker rm e34ee987580c

清理之后就可以删除悬空镜像了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文