Docker日志驱动通过修改daemon.json配置生效,Linux路径为/etc/docker/daemon.json,Windows为C:\ProgramData\docker\config\daemon.json;需指定log-driver(如"syslog"或"json-file")及log-opts(如max-size、max-file、compress、labels、env),配置后必须重启Docker服务,并可通过docker info和docker inspect验证。
直接在 /etc/docker/daemon.json(linux)或 c:\programdata\docker\config\daemon.json(windows)里写入 log-driver 和可选的 log-opts 即可。这是 docker 守护进程唯一的全局配置入口,改完必须重启 docker 服务才生效。
基础写法:指定驱动类型
比如切换到 syslog 驱动:
{
"log-driver": "syslog"
}
这样所有新启动的容器都会默认走 syslog,不再写本地 JSON 文件。
带参数的常用配置:json-file 轮转防爆盘
多数生产环境仍用 json-file,但必须加轮转限制,否则日志会无限增长,吃光磁盘:
-
max-size:单个日志文件上限,推荐
"10m"或"50m" -
max-file:最多保留几个旧日志文件,如
"3"或"5" -
compress:设为
true可自动压缩归档日志(节省空间)
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3",
"compress": "true"
}
}
按环境差异化:标签和环境变量注入
如果用日志分析平台(如 ELK、Loki),可通过 log-opts 注入元信息,方便后续过滤:
-
labels:传入容器 label 名称,如
"env,app",要求容器启动时带--label env=prod -
env:传入环境变量名,如
"HOSTNAME,VERSION",要求容器运行时有对应变量
{
"log-driver": "json-file",
"log-opts": {
"labels": "env,app",
"env": "HOSTNAME,VERSION"
}
}
验证和调试方法
配置完别急着上线,先检查是否生效:
- 执行
docker info | grep "Logging Driver",确认输出是你设的驱动 - 启动一个新容器:
docker run --rm alpine echo "test" - 查它的日志配置:
docker inspect <container-id> | grep -A 5 LogConfig
如果看到 json-file 或 syslog 且 max-size 等参数匹配,说明配置成功。



















