Docker日志驱动json-log限制容器日志大小 Docker

前言

容器不停打印日志,json-log 驱动会把日志无限写入磁盘,日积月累撑爆分区。需要限制单文件大小和保留份数。本文讲解日志驱动配置、max-size/max-file、启动参数、Compose 写法和查看。

操作步骤

1. 启动时限制日志大小

docker run -d \
  --log-driver=json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  nginx

2. max-size 与 max-file

max-size 单文件上限,max-file 保留份数,超过自动轮转删除。

3. 全局默认写入 daemon.json

{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}

4. Compose 配置

services:
  web:
    image: nginx
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

5. 查看容器日志量

docker inspect -f '{{.HostConfig.LogConfig}}' nginx

6. 清理已有超大日志

truncate -s 0 /var/lib/docker/containers/*/*-json.log

常见坑

  1. 只配 max-size 不配 max-file,旧日志仍累积。
  2. 对已运行容器改日志选项无效,需重建容器。
  3. daemon.json 修改后要重启 Docker 服务。
  4. 用 journald 等其他驱动时参数不同。
  5. 应用内部日志和容器日志是两套,别混淆。
  6. 轮转只删旧文件,不影响应用继续写。
  7. 多容器统一在 daemon.json 设默认,省去逐个配。

总结

json-file 驱动配 max-size 限单文件、max-file 限份数,启动参数或 daemon.json 全局默认,Compose 用 logging.options。对运行中容器无效需重建,daemon.json 改完重启 Docker。已有大日志用 truncate 清空。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-11-15 07:17 
'); })();