
/var/lib/docker/image/ | ||
/var/lib/docker/containers/ | ||
/var/lib/docker/volumes/ | ||
/var/lib/docker/tmp//var/lib/docker/buildkit/ | ||
/var/lib/docker/overlay2/ |
💡 我们发现磁盘空间越来越小,很可能是:
• 拉取了太多镜像 • 创建了很多容器并保留了旧版本 • 没有清理停止的容器、未使用的镜像、悬空镜像(dangling images) • 有大体积的日志文件或数据卷没有清理
那么我们应该如何查看 Docker 占用磁盘空间情况?
🔸 查看整体磁盘使用:
df -h
看看哪个分区满了(通常是 /
或 /var
)
🔸 查看 Docker 子目录占用空间:
du -sh var/lib/docker/*
输出示例:
100G /var/lib/docker/overlay2
5.2G /var/lib/docker/images
1.3G /var/lib/docker/volumes
...
可以看到哪个部分占用了最多空间。
那么我们又如何进行清理呢?
以下命令可以帮助我们释放磁盘空间:
🧹 1. 清理所有停止的容器
docker container prune
按提示输入 y
即可
🧹 2. 清理所有未使用的网络
docker network prune
🧹 3. 清理所有未使用的镜像(包括 dangling 镜像)
docker image prune -a
⚠️ 注意:这会删除所有未被容器使用的镜像,慎用!
🧹 4. 清理未使用的卷
docker volume prune
⚠️ 警告:会删除没有容器引用的卷,可能导致数据丢失!
🧹 5. 清理 Build Cache(BuildKit)
docker builder prune --all
我们可以设置一个定时任务,比如每天凌晨清理一次 Docker 垃圾:
# 编辑 crontab
crontab -e
添加以下内容:
0 3 * * * docker container prune -f && docker image prune -af && docker volume prune -f && docker network prune -f
这个定时任务会在每天凌晨 3 点自动清理无用资源。
如何避免再次出现磁盘满的问题?
--prune定期清理 | |
node_exporter + Prometheus监控 |
查看哪些容器产生了大量日志
cd /var/lib/docker/containers
du -sh */*.log
如若某个容器的日志已经超过几个 GB。
可以这样控制日志大小(在 docker run
时指定):
docker run --log-opt max-size=10m --log-opt max-file=3 ...
我把收集的一些IT运维资料做了关键字回复,可以获取云盘下载地址。

文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




