可通过修改 /etc/docker/daemon.json 配置 log-driver 和 log-opts 实现新建容器日志自动轮转,推荐 json-file 驱动并设 max-size(如"10m")和 max-file(如"3"),重启 Docker 后生效,已有容器需重建。
可以通过修改 /etc/docker/daemon.json 文件,配置 docker 守护进程的默认日志驱动和轮转参数,从而对所有新建容器的日志实现自动轮转。关键在于设置 log-driver 和 log-opts,推荐使用 json-file 驱动并启用 max-size 与 max-file 控制单个日志文件大小和保留数量。
确认当前日志驱动和配置
执行以下命令查看 Docker 默认日志配置:
docker info | grep -i "logging"
若未显式配置,Docker 默认使用 json-file 驱动,但不启用轮转(即日志文件会无限增长)。
编辑 daemon.json 启用日志轮转
在 /etc/docker/daemon.json 中添加或修改以下内容(注意 JSON 格式合法,末尾无逗号):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
-
max-size:单个日志文件最大大小,支持单位
k、m、g(如"10m"表示 10MB) - max-file:最多保留几个历史日志文件(含当前正在写的),超出后最旧的会被删除
- 该配置对后续 新建容器 生效,已有运行中的容器需重启或重新创建才生效
验证配置是否生效
重启 Docker 并创建测试容器:
sudo systemctl restart docker docker run --rm -d --name test-log alpine:latest sh -c "while true; do echo 'log line $(date)'; sleep 1; done"
稍等片刻后检查容器日志路径(通常为 /var/lib/docker/containers/<container-id>/<container-id>-json.log),用 ls -lh 查看是否有多个带数字后缀的 .log.<num> 文件(例如 xxx-json.log.1),说明轮转已工作。
注意事项与补充说明
- 如果系统已使用
journald或其他日志驱动(如syslog),需对应调整log-driver并查阅其支持的log-opts - 容器启动时可通过
--log-opt覆盖全局配置,例如:docker run --log-opt max-size=5m --log-opt max-file=5 ... - 日志轮转由 Docker 守护进程自身触发,不依赖外部工具(如 logrotate),但需确保磁盘空间充足,避免因写满导致容器异常
- 修改
daemon.json后务必systemctl restart docker,否则配置不会加载


















