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
: 删除掉未被使用的镜像。