Docker容器日志太大怎么清理?

Code°志燕 阅读 11

我在本地用 Docker 跑了个前端开发环境,结果发现 /var/lib/docker/containers 下的日志文件暴涨到几个GB,手动删又怕出问题,有没有安全的清理方式?

试过在 docker-compose.yml 里加日志限制,但旧日志还在:

services:
  web:
    image: nginx
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

重启容器后新日志是受控了,但之前那个超大的 -json.log 文件还在占空间,直接 rm 掉会影响容器运行吗?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
码农秀玲
这问题太常见了,docker日志爆炸是每个开发者都会遇到的坑。说几个靠谱的解决方案:

1. 直接清理现有日志(最暴力但有效)
先停掉相关容器,然后用 truncate 命令清空日志文件:
sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log

这样不会删除文件本身,只是清空内容,比直接rm安全。操作完重启容器就行。

2. 配置全局日志限制(一劳永逸)
/etc/docker/daemon.json 加配置(没有就新建):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}

然后 sudo systemctl restart docker 生效。这个和你写在compose里的效果一样,但对所有容器生效。

3. 临时解决方案(不用重启)
用docker自带的日志清理命令:
docker logs --tail 100 [容器ID] > /tmp/backup.log && 
docker-compose restart

先备份最后100行日志,然后重启容器会自动重建日志文件。

个人建议用方案2,我自己的开发机都这么配的。至于已经存在的日志文件,方案1清掉就行,不会影响容器运行,最多就是查不到历史日志了。
点赞 2
2026-03-08 22:02