删除docker images/containers方法

docker images生成过多,经常会占满硬盘空间,需要定时删除冗余image文件。清理的时候一般以root权限处理。

一般命令如下:

停止所有container,为删除images作准备:
docker stop $(docker ps -a -q)

如果想要删除所有container,如下指令:
docker rm $(docker ps -a -q)

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

查看当前有些什么images
docker images

要删除images,通过image的id来指定删除:
docker rmi <image id>

要删除untagged images,也就是那些id为<None>的image的话可以用
docker rmi $(docker images | grep “^<none>” | awk “{print $3}”)

docker rmi $(docker images -a|grep none|awk ‘{print $3}’)
docker ps -a | grep none | awk ‘{print $1}’ | xargs docker rmi

要删除全部image的话
docker rmi $(docker images -q)

docker build 或是 pull 命令就会产生临时镜像。如果我们用dockerfile创建一个镜像后,因为版本更新需要重新创建,那么以前那个版本的镜像就会成为临时镜像。这个是需要删除的。删除命令见下。
docker rmi $(docker images -f “dangling=true” -q)

尝试使用新的镜像,对原来的镜像进行删除,报错如下:
Error response from daemon: conflict: unable to delete XXXXXXXXXX (must be forced) – image is being used by stopped container XXXXXXXXXX

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

# docker images

希望删除imgae,根据image的id到container中找 # docker ps -a,通过删除CONTAINER ID它们。
docker rm XXXXXXXXX

再删除镜像,# docker rmi XXXXXX

也可以根据提示来的,加-f强制删除镜像。