Docker日志驱动json-log限制容器日志大小
时间:2026-11-15 07:17 作者:emer 分类: 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
常见坑
- 只配 max-size 不配 max-file,旧日志仍累积。
- 对已运行容器改日志选项无效,需重建容器。
- daemon.json 修改后要重启 Docker 服务。
- 用 journald 等其他驱动时参数不同。
- 应用内部日志和容器日志是两套,别混淆。
- 轮转只删旧文件,不影响应用继续写。
- 多容器统一在 daemon.json 设默认,省去逐个配。
总结
json-file 驱动配 max-size 限单文件、max-file 限份数,启动参数或 daemon.json 全局默认,Compose 用 logging.options。对运行中容器无效需重建,daemon.json 改完重启 Docker。已有大日志用 truncate 清空。
遇到问题加QQ23979811 协助处理