在 compose.yml 中需显式配置 logging.driver 为 "json-file" 并通过 options 设置 max-size 和 max-file 实现日志轮转,如 max-size: "10m"、max-file: "5",且所有值必须为字符串,修改后需重启服务生效。

在 compose.yml(或旧版 docker-compose.yml)中配置日志驱动和最大保留大小,需通过服务的 logging 选项设置。Docker 默认使用 json-file 驱动,它支持按大小和文件数轮转,是最常用且易配置的方式。
指定日志驱动为 json-file
必须显式声明 driver: "json-file",否则继承 Docker daemon 默认配置(可能不可控):
services:
app:
image: nginx
logging:
driver: "json-file"
设置单个日志文件最大大小和最多保留文件数
使用 options 配置轮转参数,关键选项有两个:
-
max-size:单个日志文件达到该大小后触发轮转(如"10m"、"100k"、"1g") -
max-file:最多保留多少个历史日志文件(如"3",轮转时自动删除最老的)
完整示例:
services:
app:
image: nginx
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
效果:日志写满 10MB 后生成新文件,最多保留 5 个 .log 文件(含当前),超出则删 oldest。
注意点和常见问题
- 所有
options值都必须是字符串(带引号),即使数字也要写成"5",否则 Compose 解析失败 -
max-size单位不区分大小写,但推荐用小写:"10m"✅,"10M"❌(部分版本不识别) - 该配置只对
json-file和local驱动生效;syslog、journald等由后端系统管理,不响应这些选项 - 修改后需
docker compose down && docker compose up -d重启服务才能生效(日志驱动在容器启动时绑定)
其他常用日志驱动简要参考
若需对接外部系统,可换驱动并传对应参数:
-
syslog:driver: "syslog",加syslog-address: "tcp://192.168.1.100:514" -
fluentd:driver: "fluentd",加fluentd-address: "localhost:24224" -
none:彻底禁用日志收集:driver: "none"(无options)
这些驱动一般不支持 max-size/max-file,需依赖目标服务自身做归档。



















