Docker 容器日志占用2.6TB?一文解决超大 json.log 文件暴涨问题

目录

🚨 问题背景

🧭 步骤一:快速定位哪个容器导致日志暴涨

🔍 步骤二:查看日志内容

✂️ 步骤三:立即清空日志(释放磁盘空间)

🔧 步骤四:配置日志轮转,防止再次暴涨

🔁 步骤五:重启容器使配置生效

✅ 最佳实践建议

📌 总结


🚨 问题背景

近期在维护某生产环境时,发现磁盘空间被迅速耗尽。检查后发现,某个 Docker 容器的日志文件:

/var/lib/docker/containers/<container-id>/<container-id>-json.log

居然高达 2.6TB

容器为:

CONTAINER ID   IMAGE                      NAMES
2e5f90f019ee   milvusdb/milvus:v2.5.6     milvus-standalone

原来是这个 milvus-standalone 容器不断向标准输出刷日志,导致 json 格式日志文件无限增长。下面是排查与解决全过程。


🧭 步骤一:快速定位哪个容器导致日志暴涨

docker ps -a | grep 2e5f90

或者查看日志路径对应的容器:

docker inspect 2e5f90f019ee --format '{{.Name}} - {{.LogPath}}'

确认该容器正对应 2.6TB 的日志文件。


🔍 步骤二:查看日志内容

不要直接 cat,否则会把终端撑爆。使用 tail 查看最后的内容:

tail -n 100 /var/lib/docker/containers/2e5f90f019ee*/2e5f90f019ee*-json.log

通常可见反复错误或调试信息刷屏,比如:

  • 连接失败

  • 数据库查询频繁

  • 监控服务打点日志等


✂️ 步骤三:立即清空日志(释放磁盘空间)

这是临时措施,不会重启容器:

> /var/lib/docker/containers/2e5f90f019ee*/2e5f90f019ee*-json.log

注意:这是将文件内容置空,文件仍存在但大小变为 0。


🔧 步骤四:配置日志轮转,防止再次暴涨

修改你的 docker-compose.yml 或运行参数,加入日志限制配置:

services:
  milvus-standalone:
    image: milvusdb/milvus:v2.5.6
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"

说明:

  • 每个日志文件最大 100MB

  • 最多保留 5 个轮转文件

  • 日志总量最多 500MB


🔁 步骤五:重启容器使配置生效

docker-compose down
docker-compose up -d

或手动重启指定容器:

docker restart milvus-standalone

✅ 最佳实践建议

操作推荐
生产环境日志启用 max-size + max-file
更高级管理日志集中管理(ELK / Loki / FluentBit)
调试级别避免无脑开启 debug 模式
定期巡检du -sh /var/lib/docker/containers/*/*.log

📌 总结

Docker 的 json-file 日志驱动默认无大小限制,在长时间运行服务时非常危险。我们可以:

  • 临时清空日志释放空间

  • 长期设置轮转策略限制日志增长

  • 结合日志监控工具提升运维能力

避免磁盘“爆仓”,从这一刻开始优化你的 Docker 容器日志策略!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值