1.现象
使用docker images命令查看镜像列表,会发现存在许多标签为none的镜像:
 
2. 原因
docker镜像标签为none的原因如下:
- (1)构建或重新拉取同名同Tag的新镜像:构建或重新拉取同名同Tag的新镜像后,之前的镜像版本号就会变成none。
- (2) 强行删除镜像:当镜像还被容器引用的时,强行删除此镜像,这时镜像就会变成none。
3. 总结
- (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命令手动来删除。
4. 命令删除容器、镜像
docker rm $(docker ps -aq):删除所有未运行的容器(docker stop 容器id停止运行容器)。
 docker image prune -a: 删除掉未被使用的镜像。