启用Docker日志压缩需在/etc/docker/daemon.json中配置支持压缩的驱动(如json-file或local)并设compress为true;该选项仅作用于轮转后的旧日志,当前写入日志仍为明文,且必须重启docker服务生效。
在 docker 的 /etc/docker/daemon.json 中启用容器日志压缩,关键在于使用支持压缩的日志驱动(如 json-file 或 local),并正确设置 compress 选项。注意:compress: true 仅对轮转后的旧日志生效,正在写入的当前日志文件始终为明文。
确认日志驱动是否支持压缩
不是所有驱动都原生支持压缩:
-
json-file:从 Docker 20.10+ 起支持
"compress": "true"(生成.gz文件) -
local:原生支持压缩,且更高效;可指定
"compress": "gzip"或"zstd" - syslog、journald、fluentd 等:不直接压缩日志,需依赖后端系统处理
daemon.json 中启用 gzip 压缩的典型配置
以 json-file 驱动为例,添加以下内容到 /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3",
"compress": "true"
}
}
该配置表示:单个日志文件达 100MB 后自动轮转,最多保留 3 个历史文件,轮转出的旧日志会立即用 gzip 压缩(如 xxx-json.log.1.gz)。
使用 local 驱动获得更好压缩效果
local 驱动专为生产环境优化,支持更高压缩率和更低开销:
{
"log-driver": "local",
"log-opts": {
"max-size": "50m",
"max-file": "5",
"compress": "zstd"
}
}
zstd 比 gzip 更快、压缩比更高,适合高吞吐场景。注意:Docker 23.0+ 默认支持 zstd,旧版本请确认是否可用。
配置生效与验证要点
- 保存后必须执行
sudo systemctl restart docker才能生效 - 新启动的容器自动继承该策略;已有容器需
docker rm -f && docker run重建才应用 - 验证是否启用压缩:
ls -lh /var/lib/docker/containers/*/*-json.log.*—— 应能看到.gz或.zst后缀文件 - 检查容器实际配置:
docker inspect <container_id> | jq '.[0].HostConfig.LogConfig'


















