在 daemon.json 中配置默认最大日志文件数需在 log-opts 下设置 max-file 参数,如 "max-file": "5",表示最多保留 5 个日志文件(含当前),必须与 max-size 配合使用才能实现自动轮转和清理,且仅对新建容器生效。
在 daemon.json 中配置默认最大日志文件数,关键是在 log-opts 下设置 max-file 参数。它控制每个容器最多保留几个日志文件(含当前正在写的那个),配合 max-size 才能真正实现自动轮转和清理。
配置 max-file 的标准写法
编辑或创建 /etc/docker/daemon.json,填入以下结构(示例设为最多保留 5 个日志文件):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "5"
}
}
-
max-file: "5"表示:当前日志写满后轮转为-json.log.1,再满则变为-json.log.2……最多保留.1到.4四个旧文件 + 当前-json.log,共 5 个 - 必须和
max-size配合使用,单独设max-file无效(因为不触发轮转就无“旧文件”可删) - 值必须是纯数字字符串,如
"3"、"10",不能写成3(JSON 要求字符串)
生效前提与注意事项
该配置只影响新建容器,已有运行中的容器不会自动更新日志策略:
- 修改后需执行
sudo systemctl daemon-reload && sudo systemctl restart docker - 重启后启动的新容器才按此规则生成日志;老容器需
docker stop && docker rm && docker run...重建才生效 - 如果 daemon.json 语法错误(比如多了一个逗号、用了注释),Docker 会启动失败,务必先备份原文件
验证是否生效
启动一个新容器后,用以下命令检查其日志配置:
docker inspect --format='{{.HostConfig.LogConfig}}'
输出中应看到类似:
{json-file map[max-file:5 max-size:50m]}
说明配置已正确加载。











