当 Docker 占用过多磁盘空间或缓存无法清除时,可以尝试以下方法解决:
# 清理停止的容器、未使用的网络、悬空镜像和构建缓存
docker system prune
# 强制清理所有未使用的镜像(包括未被容器引用的)
docker system prune -a
# 清理悬空镜像(没有标签且未被任何容器引用的镜像)
docker image prune
# 清理特定类型的对象
docker container prune # 清理停止的容器
docker volume prune # 清理未使用的卷
docker network prune # 清理未使用的网络
# 清理超过特定时间的镜像(例如48小时前)
docker image prune -a --filter "until=48h"
# 查看磁盘使用情况
docker system df
# 删除特定镜像
docker rmi [IMAGE_ID]
# 删除所有镜像(谨慎使用)
docker rmi $(docker images -q)
# 构建时忽略缓存
docker build --no-cache -t your-image .
# 清理构建缓存
docker builder prune
# 查看卷使用情况
docker volume ls
# 删除未使用的卷
docker volume prune
# 停止所有容器
docker stop $(docker ps -aq)
# 删除所有容器
docker rm $(docker ps -aq)
# 删除所有镜像
docker rmi $(docker images -q)
# 清理系统
docker system prune -a --volumes
对于 overlay2 存储驱动(默认):
# 查看存储驱动使用情况
du -h /var/lib/docker/overlay2/
# 手动清理(需先停止Docker服务)
sudo systemctl stop docker
rm -rf /var/lib/docker/overlay2/[hash]*
sudo systemctl start docker
-a
或 --all
参数如果问题仍然存在,可能需要检查 Docker 的存储驱动配置或考虑增加磁盘空间。