docker容器日志驱动配置核心是“往哪写、怎么写、写多少”,需按场景选驱动并设参数:本地开发用json-file,生产用fluentd/gelf,企业用syslog,临时测试用none;json-file必须配max-size、max-file和compress;可通过docker run、docker-compose.yml或daemon.json统一配置。

按场景选合适的日志驱动
不同驱动适配不同环境,不强行统一:
-
本地开发调试:用
json-file(默认),日志存本地、结构清晰、docker logs直接可查 -
生产集中管理:选
fluentd或gelf,把日志推给 Graylog / ELK / Loki 等平台做聚合分析 -
企业已有 syslog 基础设施:用
syslog,无缝对接 rsyslog 或 syslog-ng -
极简部署或临时测试:设为
none,彻底禁用日志节省 I/O 和空间
json-file 驱动必须配轮转参数
哪怕只用默认驱动,也得限制大小和数量,否则单个容器跑几天就可能生成几十 GB 日志文件。
-
max-size:单个日志文件上限,推荐设为"10m"或"50m"(单位支持 b/k/m/g) -
max-file:保留几个历史轮转文件,设"3"或"5"较稳妥 -
compress:设"true"可自动 gzip 压缩旧日志,省一半以上空间
示例(docker run):docker run -d --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 --log-opt compress=true nginx
Docker Compose 中统一配置服务日志
在 docker-compose.yml 里为每个服务单独定义,比全局改 daemon.json 更灵活:
version: '3.8'
services:
api:
image: myapp:latest
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
compress: "true"
frontend:
image: nginx:alpine
logging:
driver: "fluentd"
options:
fluentd-address: "127.0.0.1:24224"
tag: "frontend.nginx"
注意:fluentd 类驱动需确保目标服务已就绪,否则容器可能启动失败。
全局默认驱动(影响所有新容器)
修改 /etc/docker/daemon.json,重启 Docker 守护进程生效:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3",
"compress": "true"
}
}
该配置对未显式指定 --log-driver 的容器生效,适合团队统一运维规范。











