Docker镜像-删除镜像

时间:2021-08-06 23:38:57

因为尝试使用新的镜像,对原来的镜像进行删除,报错如下:

Docker镜像-删除镜像

 

意思就是在删除镜像之前,要先删除对应的docker.因为该image被对应的container引用,所以image删除失败。

显示所有状态的容器  docker ps -a   /   docker container ls -a

Docker镜像-删除镜像

 

然后清理所有终止状态的容器  docker container prune

 Docker镜像-删除镜像

 

然后删除镜像

Docker镜像-删除镜像



也可以根据提示来的,加-f强制删除镜像。
顺便提一下,docker命令:
1.docker rm <容器ID或容器名>
2.docker stop<容器ID或容器名>

引申:1.如何删除所有容器;2.如何删除所有容器镜像,3.在创建镜像时会产生很多的中间镜像,这部分镜像是一起删除的吗?none镜像?

1.  docker rm $(docker ps -q) 可以删除所有容器

这里docker ps 的命令包括:
1)-a 列出所有容器
2)-l 列出最新创建容器
3)-n=2 列出最近创建的2个容器
4)-q 仅列出容器ID
5)-s 显示容器大小
所以docker ps -aq 相当于列出所有的容器ID,然后docker rm它们

 

但是要注意的是,如果容器正在运行是无法删除,需要先停止:

docker stop $(docker ps -aq)

2.删除镜像也如此 

 docker rmi $(docker ps -aq) 或者 docker image rm 选项(id ,名字....)



3.如果想要删除没有打tag的none镜像:

Docker rmi $(docker images -a|grep none|awk '{print $3}')


也可以写成:

docker ps -a |grep none }awk '{print $1}'|xargs docker rmi

通过xagrs传入参数
有些什么情况会产生none的镜像?
1)在镜像创建过程中创建失败,会产生无效的none镜像
2)pull镜像。镜像的垂直父子关系
3)使用dockerfile文件创建镜像,重新生成,新的镜像名赋给后者,前面的镜像名字为none