我们一般定义image,都是使用Dockerfile,我们随时可能修改这个文件,然后重新使用docker build -t name . 命令来构建一个新的image。这种情况下,如果我们使用了和之前一样的镜像名来命名,那么docker会把这个名字赋给新的镜像,以前的镜像并不会被删除,但是此时它的名字被新的镜像剥夺了,就成为了一个无名镜像,也就是<none>:<none>出现的原因。
这个none镜像会占用磁盘空间,所以我们必须删除它。
当然先要删除引它的容器。
然后可以使用如下的一个命令:
docker rmi $(docker images -f "dangling=true" -q)
这里附带说下docker删除的命令。
rm是删除容器的命令
rmi是删除镜像的命令
如果我们要删除全部的镜像,那么可以使用嵌套的命令,先把镜像的id得到。
可以使用docker images命令。-q参数指的是只显示id。-a是显示全部的。-f可以指定类别,这里指定了类别为dangling的镜像。
删除全部容器也会使用到类似:
docker rmi $(docker ps -aq)