全局配置 Docker 日志轮转需修改 /etc/docker/daemon.json,设置 "log-driver": "json-file" 及 "max-size": "100m"、"max-file": "5",重启 docker 服务后生效;也可在 run 或 docker-compose 中为单容器覆盖配置,并支持 compress 等增强选项。

直接写进 Docker 守护进程配置文件就能全局生效,不用每个容器单独设。核心就是指定日志驱动为 json-file,再配上 max-size 和 max-file 两个参数。
全局配置(推荐)
编辑 /etc/docker/daemon.json,填入如下内容:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5"
}
}
保存后重启 Docker 服务:
sudo systemctl restart docker
这样所有新启动的容器都会自动启用轮转:单个日志文件最大 100MB,最多保留 5 个历史文件(即最多占用约 500MB 磁盘空间)。
单容器覆盖配置
如果某个容器日志量特别大或特别小,可以在启动时单独覆盖:
-
命令行方式:
docker run -d \
--log-driver json-file \
--log-opt max-size=200m \
--log-opt max-file=7 \
nginx -
docker-compose.yml 方式:
services:
app:
image: myapp
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "7"
可选增强项
在 log-opts 里还能加这些实用参数:
- compress: "true" —— 对轮转后的旧日志自动 gzip 压缩,节省空间
- labels 或 env —— 配合日志采集工具(如 Fluentd)做标签过滤,不参与轮转但提升可追溯性
例如:
"log-opts": {
"max-size": "50m",
"max-file": "3",
"compress": "true"
}
验证是否生效
启动一个测试容器后,检查它的日志路径:
docker inspect <容器名> | grep LogPath
然后进入对应目录,看是否有 -json.log 和 -json.log.1、-json.log.2 等轮转文件生成。


















