如何清理docker占用空间

近日见闻

  1. 今儿忙,没空看新闻

docker清理空间

一句命令查看占用空间:

docker system df

Type 列出docker使用磁盘的四种类型:包括images占用空间、containers容器占用空间、local volumes挂在本地数据卷的空间、构建中产生的缓存空间,RECLAIMABLE 是可回收大小。

创建一个容器时,都会有一些文件和目录被创建,例如:

/var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。

/var/lib/docker/overlay2 目录下含有容器的读写层,如果容器使用自己的文件系统保存了数据,那么就会写到此目录下。

删除所有已经停止的容器:

docker container prune

是删除停止的容器,如果想删除所有容器(包括停止的、正在运行的),可以使用下面这2个命令:

$ docker rm -f $(docker ps -aq)

$ docker container rm -f $(docker container ls -aq)

有一些镜像是隐形的:

子镜像,就是被其他镜像引用的中间镜像,不能被删除。 悬挂状态的镜像,就是不会再被使用的镜像,可以被删除。

下面的命令列出所有悬挂状态的镜像:

$ docker image ls -f dangling=true

删除此类镜像:

docker image rm $(docker image ls -f dangling=true -q)或 docker image prune

如果想删除所有镜像,可以使用下面的命令:

docker image rm $(docker image ls -q)

删除不再使用的数据卷:

docker volume rm $(docker volume ls -q) 或 docker volume prune

删除 build cache 可以使用命令:

$ docker builder prune

docker 系统层面也有 prune 这个子命令,可以一键清理没用的空间:

$ docker system prune