Docker容器日志怎么限制大小避免占满磁盘?

UE丶芸菡 阅读 35

我用 Docker 部署了一个前端应用,运行一段时间后发现 /var/lib/docker/containers 目录下的日志文件特别大,差点把磁盘撑爆了。之前试过在 docker run 时加 --log-opt max-size=10m,但好像没生效?

现在每次都要手动清空日志,太麻烦了。有没有办法全局配置或者在 docker-compose 里统一设置日志轮转?

version: '3'
services:
  web:
    image: my-frontend-app
    ports:
      - "80:80"
    # 这里该怎么加日志限制?
我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
UX志欣
UX志欣 Lv1
你那个 --log-opt max-size=10m 没生效大概率是因为没指定日志驱动。Docker 默认用的是 json-file 驱动,这个是支持轮转的,但如果你没明确写出来,配置可能没对上。

在 docker-compose 里这样写就行:

version: '3'
services:
web:
image: my-frontend-app
ports:
- "80:80"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"


解释一下这两个参数:max-size 是单个日志文件最大 10MB,超过就轮转;max-file 是保留几个轮转后的文件,超过会删最早的。这样一个容器最多占 40MB 左右,不会炸磁盘。

如果你想全局配置所有容器都默认生效,可以去修改 Docker daemon 的配置文件。Linux 上一般是 /etc/docker/daemon.json,加这么一段:

{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}


改完记得重启 Docker 服务:systemctl restart docker。注意这个是全局配置,新启动的容器会生效,已经在跑的要重启才行。

还有一点提醒,如果你用的是其他日志驱动比如 journald 或者 syslog,那 max-size 这些选项是不管用的,得换回 json-file 或者在对应驱动那边配置。
点赞
2026-03-18 16:07