现象与定位#
容器日志默认可能持续增长。典型现象是 /var/lib/docker/containers 占满系统盘,但 docker system df 看不出全部日志体积。
bash
df -hT
du -xhd1 /var/lib/docker | sort -h
find /var/lib/docker/containers -name '*-json.log' -printf '%s %p
' | sort -nr | head
docker inspect --format '{{.Name}} {{.HostConfig.LogConfig.Type}} {{json .HostConfig.LogConfig.Config}}' $(docker ps -q)
配置日志轮转#
Docker 官方 json-file 驱动支持 max-size 与 max-file。守护进程默认值写入 /etc/docker/daemon.json,选项值必须是字符串。
json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "5",
"compress": "true"
}
}
也可以只对关键服务配置:
yaml
services:
app:
logging:
driver: json-file
options:
max-size: "20m"
max-file: "5"
让配置真正生效#
新默认值不会自动应用到已有容器。验证 JSON 后重启 Docker,并逐个重建业务容器。
bash
jq . /etc/docker/daemon.json
systemctl restart docker
docker compose up -d --force-recreate
docker inspect --format '{{json .HostConfig.LogConfig}}' app
参考 Docker json-file 日志驱动文档。应用侧仍应输出结构化日志,并避免在错误循环中每毫秒打印同一异常;轮转只能限制损失,不能替代根因修复。
讨论区 31
分享你的经验、补充或不同观点。支持 Markdown 基础语法。