Docker Compose 如何配置日志轮转防止磁盘占满

作者:袖梨 2026-08-26

在 docker-compose.yml 中配置 logging 为 json-file 驱动并显式设置 max-size 和 max-file 参数,可实现轻量可靠日志轮转;需重建容器生效,支持可选 compress 压缩以节省磁盘空间。

直接在 docker-compose.yml 里配好 logging,是最轻量、最可靠的方式。不用改宿主机系统,也不依赖额外组件,改完重建容器就生效。

明确指定 json-file 驱动

Docker Compose 默认用的就是 json-file,但它不自动启用轮转——必须显式写出来,避免某些旧版本 fallback 到无限制行为。

  1. 确保每个服务下都有 logging 区块
  2. driver 必须设为 "json-file"(注意加英文双引号)
  3. 别写成 localsyslog 或留空

设置轮转大小和数量

两个参数必须一起用,缺一不可:

  1. max-size: "10m":单个日志文件最大 10MB,建议范围 5m~50m,兼顾可读性与磁盘压力
  2. max-file: "3":最多保留 3 个日志文件(当前 + 2 个历史),超出自动删最旧的

例如一个高输出服务可设 max-size: "50m" + max-file: "5",总占用上限约 250MB。

修改后必须重建容器

配置不是热加载,docker-compose up 不会重载日志设置,只有重建才生效:

  1. 运行 docker-compose down 停止旧容器
  2. 再执行 docker-compose up -d 启动新容器
  3. 验证是否生效:docker inspect <容器名> | grep -A 5 LogConfig,看输出里是否有对应参数

进阶:加压缩节省空间

如果磁盘特别紧张,可以开启日志压缩:

  1. options 下加一行:compress: "true"
  2. 轮转后的旧日志会自动用 gzip 压缩,通常能减少 60%~80% 空间占用
  3. 不影响 docker logs 查看,Docker 会自动解压

相关文章

精彩推荐