安全清理容器的日志文件/var/lib/docker/containers
从你的 du -h -d1 输出可以看出:
- 总共 82GB 的空间被
/var/lib/docker/containers占用。 - 其中一个容器目录(ID 为
b731e62e9a85206148e66cceb202722362f04f444fc9c4aa205866aaf373abe6)就占用了 82GB,几乎全部空间。
这极大概率是该容器的 日志文件(b731e62...-json.log)过大导致的。
🔍 第一步:确认是日志文件
进入该目录,查看具体文件:
ls -lh /var/lib/docker/containers/b731e62e9a85206148e66cceb202722362f04f444fc9c4aa205866aaf373abe6/
你应该会看到类似:
-rw-r----- 1 root root 82G ... b731e62e9a85206148e66cceb202722362f04f444fc9c4aa205866aaf373abe6-json.log
✅ 安全清理方案(根据容器状态选择)
🟢 情况一:该容器仍在运行,但你不能停它
比如是生产服务,需要保持运行。
使用 truncate 清空日志而不中断容器:
truncate -s 0 /var/lib/docker/containers/b731e62e9a85206148e66cceb202722362f04f444fc9c4aa205866aaf373abe6/b731e62e9a85206148e66cceb202722362f04f444fc9c4aa205866aaf373abe6-json.log
✅ 空间立即释放,容器继续正常运行。
🔴 情况二:该容器已停止或不再需要
比如是测试容器、僵尸容器。
彻底删除容器(推荐):
-
先查容器名或确认状态:
docker ps -a | grep b731e62 -
如果确认无用,删除它:
docker rm b731e62e9a85206148e66cceb202722362f04f444fc9c4aa205866aaf373abe6如果还在运行,先
docker stop <id>再删。
✅ 删除后,整个目录(包括 82GB 日志)会自动被 Docker 清理。
🛡️ 长期预防:配置日志轮转
避免未来再次出现 82GB 日志!
编辑 /etc/docker/daemon.json(若不存在则创建):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
然后重启 Docker:
systemctl restart docker
⚠️ 注意:此设置仅对新启动的容器生效。已有容器需重建(
docker-compose up -d或docker run重新创建)才能应用。
🔎 补充建议
-
查看这个容器是什么:
docker inspect b731e62e9a85 --format='{{.Name}} {{.Config.Image}}'看是否是关键服务(如数据库、日志收集器等)。有些应用(如未配置的日志服务、调试容器)会疯狂输出日志。
-
如果是
fluentd、logstash、promtail或自研程序,检查其日志级别(是否误设为DEBUG)。
✅ 总结操作(推荐顺序)
-
先清空日志释放空间(无论容器是否运行):
truncate -s 0 /var/lib/docker/containers/b731e62e9a85206148e66cceb202722362f04f444fc9c4aa205866aaf373abe6/*-json.log -
决定是否保留该容器:
- 不需要 →
docker rm - 需要 → 未来重建时应用日志限制
- 不需要 →
-
配置全局日志轮转,防止复发。
如果你告诉我这个容器是什么(运行什么服务),我可以给出更具体的建议(比如是否安全删除、如何调低日志级别等)。
No Comments