docker占用磁盘太大,如何清理
docker 占用的空间可以通过下面的命令查看:
docker system df
TYPE 列出了docker 使用磁盘的 4 种类型,TOTAL 表示该类型资源的总数,ACTIVE 表示当前正在使用的数量,SIZE 表示该类型资源的总大小,RECLAIMABLE 表示可以回收的空间大小。
- Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。
- Containers:运行的容器占用的空间,表示每个容器的读写层的空间。
- Local Volumes:容器挂载本地数据卷的空间。
- Build Cache:镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)。
镜像的磁盘占用
删除悬挂状态的镜像,即 none 状态的镜像
docker image prune
如果想删除所有镜像,可以使用下面的命令:
docker image rm $(docker image ls -q)
注:正在被容器使用的镜像是不能被删除的。
容器的磁盘占用
删除所有停止的容器
docker container prune
如果想删除所有容器(包括停止的、正在运行的)
docker rm -f $(docker ps -aq)
或者
docker container rm -f $(docker container ls -aq)
数据卷的磁盘占用
删除不再使用的数据卷
docker volume prune
Build Cache 的磁盘占用
删除 build cache 可以使用命令
docker builder prune
一键清理
通过上面的说明,我们知道了像容器、镜像、数据卷都提供了 prune这个子命令,帮助我们回收空间。
其实,docker 系统层面也有 prune 这个子命令,可以一键清理没用的空间:
docker system prune
这个命令用于清理 Docker 系统中的未使用资源,包括未使用的镜像、停止的容器、未被使用的网络和挂载点等。
这个命令慎用