docker 守护进程日志轮转通过修改 /etc/docker/daemon.json 配置文件中的 log-opts 参数来实现。具体做法是设置 max-size 限制单个日志文件的大小(如 100mb),并设置 max-file 限制保留的日志文件数量(如 3 个)。配置完成后重启 docker 服务即可生效,新产生的日志将按设定自动轮转,旧日志会被删除。

如何配置 daemon.json 实现日志轮转
在 /etc/docker/daemon.json 中添加 log-driver 和 log-opts 字段即可启用轮转。默认驱动为 json-file,需显式指定其选项。设置 max-size 控制单文件大小,max-file 控制保留份数。例如设为 100MB 和 3 个文件,则当日志达到 100MB 时轮转,最多保留 3 个文件(含当前正在写入的文件)。

{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
上述配置写入 /etc/docker/daemon.json 后,执行 systemctl restart docker 重启服务。此后所有新建容器若未单独指定日志驱动,将继承此全局设置。已存在的容器不会自动应用新配置,需重建或单独修改。
不同 max-size 值对磁盘占用的影响
max-size 的单位支持 k、m、g,分别代表 KB、MB、GB。若设为 50m,则每个日志文件最大 50MB;若设为 1g,则最大 1GB。结合 max-file 可估算最大磁盘占用:例如 max-size=100m 且 max-file=3,理论最大占用为 300MB。实际中因轮转时机和写入频率,可能略低于该值。
Docker Hub (hub.docker.com)。此技能适用于所有 Docker Hub 操作,包括读取、创建、更新和删除数据。只要任务涉及 Docker Hub,就使用此技能。

# 验证配置是否生效
journalctl -u docker.service --no-pager | grep log-opts
# 查看某个容器的日志驱动和选项
docker inspect --format='{{.HostConfig.LogConfig}}' <container_id></container_id>
通过 docker inspect 可查看容器实际使用的日志配置。若输出显示 Type: json-file 且 Options 中包含 max-size 和 max-file,说明配置已生效。若未显示,可能是容器创建时未继承全局配置,需手动指定或重建容器。
日志轮转失败时的排查方法
若日志未按预期轮转,首先检查 /etc/docker/daemon.json 语法是否正确,可使用 python3 -m json.tool /etc/docker/daemon.json 验证。其次确认 Docker 服务已重启,配置变更不会热加载。若仍无效,检查磁盘空间是否充足,以及是否有权限写入日志目录。最后,可通过 docker logs 观察日志增长情况,确认轮转行为。










