docker镜像Tag为none的原因及分析
作者:RQ-ghylls
文章介绍了Docker镜像标签为none的原因及其处理方法,none标签的镜像可能有用,也可能无用,具体取决于是否有容器引用,建议在构建同名同tag的镜像前检查是否存在同名镜像,并注意强行删除镜像可能带来的问题,Docker没有自动删除none镜像的机制,需要手动删除
现象
使用docker images
命令查看镜像列表,会发现存在许多标签为none的镜像:
原因
docker镜像标签为none的原因如下:
- (1)构建或重新拉取同名同Tag的新镜像:构建或重新拉取同名同Tag的新镜像后,之前的镜像版本号就会变成none。
- (2) 强行删除镜像:当镜像还被容器引用的时,强行删除此镜像,这时镜像就会变成none。
总结一下:
- (1)注意,并不是所有none的镜像都是无用的,如果还有容器引用的话,那还是有用的;
- (2)如果要构建同名同tag的镜像,先查看是否已存在同名同tag的镜像,如果存在而且没有被任何容器使用则先删除,否则就会产生none镜像,占用空间。
- (3)注意,即使镜像被强行删除了(
docker rmi -f 镜像id
),如果容器还在,还是可以重启容器的。 - (4)这里是
docker images
命令查看到的none标签镜像,而不是docker images -a
命令查看的none镜像(docker images -a
查看所有的镜像包括隐藏的中间镜像)。因为镜像是分层,有些分层是匿名的,所以不能随意删除这些镜像。 - (5)docker没有自动删除这些none镜像的机制,只能通过docker命令手动来删除。
命令删除容器、镜像
docker rm $(docker ps -aq)
:删除所有未运行的容器(docker stop 容器id
停止运行容器)。docker image prune -a
: 删除掉未被使用的镜像。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。