Docker日志轮转需同时配置max-size和max-file参数才能生效:max-size限制单个文件大小(如"50m"),max-file限制保留数量(如"3"),二者协同确保日志总量可控;支持容器启动时指定或全局daemon.json配置,生产环境推荐更轻量的local驱动并启用compress。

核心是让 Docker 主动控制日志文件大小和数量,而不是任其无限追加。关键不在“禁用”,而在“可控轮转”。
必须同时设置两个参数
使用 json-file 或 local 驱动时,max-size 和 max-file 必须一起配置才生效:
-
max-size:单个日志文件上限,如
"10m"、"100m" -
max-file:最多保留几个归档文件,如
"3"表示当前文件 + 最近2个旧文件
例如设为 max-size=10m + max-file=3,容器日志总占用就稳定在 30MB 以内,超出后最老的 .log.2 会被自动删除。
两种配置方式按需选择
方式一:启动容器时指定(推荐用于重点服务)
命令中直接加参数,精准控制:
docker run -d \ --log-driver json-file \ --log-opt max-size=50m \ --log-opt max-file=3 \ --name myapp nginx
方式二:全局默认(推荐用于整机统一治理)
编辑 /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
保存后执行 sudo systemctl restart docker,此后所有新建容器自动继承该策略。
更轻量的替代驱动(进阶推荐)
生产环境建议改用 local 驱动,它比 json-file 更省资源,还支持自动压缩:
- 日志文件后缀为
.log和.log.zst(zstd 压缩) - 同样支持
max-size、max-file,额外支持compress: "true" - 配置示例:
{
"log-driver": "local",
"log-opts": {
"max-size": "10m",
"max-file": "3",
"compress": "true"
}
}
验证是否真正生效
不要只看配置,要检查实际效果:
- 查容器日志配置:
docker inspect myapp | grep -A 5 LogConfig - 看宿主机日志文件:
ls -lh /var/lib/docker/containers/*/*-json.log*(应看到.log、.log.1、.log.2等多个小文件) - 观察一段时间,确认没有单一文件突破
max-size限制



















