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

上官子璐 阅读 14

我本地开发用的 Docker 容器跑了一段时间,发现磁盘快满了,查了下是容器日志文件太大。试过直接删 /var/lib/docker/containers 下的日志文件,但好像没生效,还怕把容器搞崩了。

有没有安全又方便的办法限制或自动清理这些日志?比如像这样配置:

docker run -it --log-opt max-size=10m --log-opt max-file=3 my-app

但已经运行的容器还能改吗?总不能每次重建吧……

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
Dev · 诗雯
这个我之前踩过坑,说说我的经验。

已运行的容器确实没法直接改 --log-opt 参数,你那个 docker run 的配置只能在创建时指定。不过别担心,有几个解决办法:

先清理现有日志压压惊

别直接删文件,容易出问题。正确的姿势是:

# 查看各个容器日志大小
du -h /var/lib/docker/containers/*/*-json.log

# 清空日志内容(truncate 比 rm 安全)
truncate -s 0 /var/lib/docker/containers/<container-id>/*-json.log

# 或者用 echo
echo "" > /var/lib/docker/containers/<container-id>/*-json.log


容器不会崩,清空后日志会继续写。

对于已运行的容器,修改配置就两条路:

一是用 docker-compose 的老规矩,改完配置后 docker-compose up -d 强制重建:
services:
my-app:
image: my-app
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"


二是直接改 daemon.json 让所有新容器都生效:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}

改完记得重启 docker:systemctl restart docker

日常建议:开发环境我一般直接设 max-size=10m max-file=2 就够了,日志太大看着也烦。如果容器日志实在太多,可以考虑把日志驱动改成 syslog 或者直接关掉日志(--log-driver=none),不过生产环境还是建议保留以便排查问题。
点赞
2026-03-18 10:02