欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章!
搞容器开发一段时间后,想看看都有哪些镜像,执行了一下docker images -a
,蒙圈了,有一堆<none>:<none>
的镜像。不知有什么用,不知能不能删,不知会不会占用很多空间。接下来我们探索一下吧。
这些<none>:<none>
镜像可分为两类:好与坏、有用与无用、不建议删除和建议删除的。
好的<none>:<none>
镜像是由于镜像分层的中间镜像。它们只会在docker images -a
才会显示出来,用docker images
是不会显示的。它们也不会造成空间问题。
坏的<none>:<none>
镜像会占用空间,主要是由于新加镜像替换原来相对标签的镜像,原来镜像就变成了<none>:<none>
而不会被删除。
我们执行docker images
查看:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE pkslow/springboot-mongo 0.0.6 f029f9b6e703 28 minutes ago 356MB pkslow/springboot-mongo latest f029f9b6e703 28 minutes ago 356MB <none> <none> 56de36189ad6 29 minutes ago 356MB <none> <none> 9e00dfd258dc 40 hours ago 356MB <none> <none> 2d736eaaafd0 2 weeks ago 346MB
然后再docker build
一次,用同样的标签0.0.6
。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE pkslow/springboot-mongo 0.0.6 2119e4fbc6e8 43 seconds ago 356MB pkslow/springboot-mongo latest 2119e4fbc6e8 43 seconds ago 356MB <none> <none> f029f9b6e703 30 minutes ago 356MB <none> <none> 56de36189ad6 31 minutes ago 356MB <none> <none> 9e00dfd258dc 40 hours ago 356MB <none> <none> 2d736eaaafd0 2 weeks ago 346MB
认真查看可以得出,以前最新的镜像ID为f029f9b6e703
,后来变成了<none>:<none>
。
这些坏坏的镜像也叫dangling images
,空悬镜像。
既然没用,又还占用空间,不如就删掉它。Docker
没有自动删除这些镜像的机制,可以通过以下命令删除:
$ docker rmi $(docker images -f "dangling=true" -q)
检查一下,已经没有<none>
的镜像了。
$ docker images | grep '<none>'