必须成对配置max-size和max-file,因默认json-file驱动不启用轮转,单文件无限增长易致磁盘爆满;全局设于daemon.json可使所有新容器自动继承,推荐组合为"max-size":"10m"、"max-file":"5"、"mode":"non-blocking"。

直接在 Docker 守护进程全局配置中设置 json-file 驱动的 max-size 和 max-file,是最有效、最稳妥的默认日志轮转方案。只设一个参数不会生效,必须成对配置。
为什么必须全局配置 daemon.json
默认的 json-file 驱动不启用轮转,容器日志会无限追加到单个文件,高频服务几小时就可能突破 20GB。全局配置一次,所有新创建容器自动继承,避免逐个漏配。
- 编辑 /etc/docker/daemon.json(不存在则新建)
- 明确指定驱动为 json-file,并同时写入两个关键选项
- 重启 Docker 才能生效:
sudo systemctl restart docker
推荐的默认参数组合
兼顾排查便利性、磁盘安全与资源开销,生产环境常用组合如下:
- max-size: "10m" —— 单个日志文件上限 10MB,便于快速打开分析,也防止单文件过大拖慢 I/O
- max-file: "5" —— 最多保留 5 个轮转文件(当前 + 4 个历史),总空间稳定在 50MB 以内
- mode: "non-blocking" —— 关键!当日志写满时,不阻塞应用线程,保障服务可用性
配置示例(daemon.json)
完整内容如下,复制粘贴即可:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5",
"mode": "non-blocking"
}
}
保存后执行 sudo systemctl restart docker。此后新建容器无需额外参数,日志自动按规则轮转。
验证是否生效
别只信配置,要确认实际行为:
- 查容器日志配置:
docker inspect 容器名 | grep -A 8 "LogConfig",确认 max-size 和 max-file 已加载 - 看日志路径:
docker inspect 容器名 | jq '.[].LogPath' - 登录宿主机,进
/var/lib/docker/containers/xxx/目录,检查是否存在-json.log、-json.log.1等多个文件,且大小基本不超过 10MB











