监控疯狂报警:我是怎么干掉 /var/lib/docker 几十G垃圾的
前言:近期发现测试型与 CI/CD 宿主节点频发磁盘 100% 爆满告警,排查结果大多集中于
/var/lib/docker/里的悬空镜像和持久化堆积的*-json.log容器标准输出文件。很多新手面对这种情况非常容易直接执行全盘
rm -rf,但这将直接导致宿主侧文件与 Docker Daemon 内存里的 Graph driver 驱动元数据严重不同步,引发启动锁定及文件系统崩溃等次生灾害。以下为极客无感排错范式记录,希望能帮到被磁盘告警折磨的朋友 🤗
🔍 阶段一:透视与诊断
禁止使用普通的 Linux du 命令死磕深层目录!请使用 Docker 暴露的资源视图。
🗑️ 阶段二:官方级垃圾回收
如果确准业务节点无需存留未运行的历史镜像,请使用此安全指令组合:
📉 阶段三:日志膨胀溢出抑制
对于无法设置全局日志大小滚动策略(log-opt max-size)的存量老机器,手动拦截清理是必要动作:
第一步,抓出体量最大的元凶并排序输出:
第二步,利用系统调用而非删除行为执行原地归零清空:
🛠️ 附录:服务器极客专属清理 Shell 脚本
直接通过 Crontab 进行日常注入定时触发(建议配合每天凌晨检测),阈值自定义在 80% 触发自卫防爆。将以下代码保存为 docker_cleaner.sh 并赋予执行权限。
📝 总结
对于 Docker /var/lib/docker(特别是 overlay2 和 containers 目录)爆满的情况:
- 绝对不要暴力 rm:清理必须通过 Docker 自身命令或是系统工具的就地截断(
truncate或重定向),保证底层元数据强一致性。 - 根治策略:未来部署新节点时,建议在
/etc/docker/daemon.json配好log-driver和log-opts的大小与滚动策略。
© 西贡梦想家·
转载请注明:5ok.net/blog/docker-cleanup
相关推荐
Windows 离线安装 Docker Desktop 完全指南(含常见报错解决)
在无法联网的内网环境中,如何一步步完成 Docker Desktop 的安装?本文涵盖完整离线安装流程,并重点解决 WSL 版本过低导致 Docker 无法启动的问题。
VMware 安装 CentOS 7.5 操作系统
详细图文教程,手把手教你在 VMware Workstation 中安装 CentOS 7.5 操作系统,包含网络配置与分区设置。
使用 SecureCRT 远程连接 CentOS 虚拟机
配置 CentOS 7 网络适配器,设置静态 IP,关闭防火墙,并使用 SecureCRT 工具进行 SSH 远程连接。