docker-compose.yml 中,logging 配置的作用
docker-compose.yml 里的 logging: 就是把容器写到 stdout/stderr 的日志交给哪一个“日志驱动”去收集、过滤、存储或轮转。默认驱动是 json-file,仅靠它就能解决 90% 的“看日志+占磁盘”问题;其他驱动(syslog、journald、fluentd、awslogs…)则对接外部日志系统。
────────────────────
- 语法速查
yaml
Copy
services:
app:
image: myapp
logging:
driver: "json-file" # 驱动名
options: # 驱动参数(键值对)
max-size: "10m"
max-file: "3"
labels: "production_status"────────────────────
2. 常见驱动 & 用途
2. 常见驱动 & 用途
Copy
| driver | 场景 | 关键 options |
|---|---|---|
| json-file (默认) | 本地调试、单机 | max-size, max-file, labels |
| syslog | 进宿主机 syslog / rsyslog | syslog-address, tag |
| journald | systemd 体系 (CentOS 7+, Ubuntu 16+) | tag, labels |
| fluentd / logstash | 集中日志平台 | fluentd-address, tag |
| awslogs | 直接进 AWS CloudWatch | awslogs-group, awslogs-stream |
| none | 彻底丢弃日志 | — |
────────────────────
3. 轮转磁盘实战
3. 轮转磁盘实战
Copy
logging:
driver: "json-file"
options:
max-size: "10m" # 单文件 10 MB
max-file: "3" # 最多保留 3 个轮转文件效果:
磁盘再也不怕被刷爆。
app-json.log → 达到 10 MB → 重命名为 app-json.log.1 → 新建 app-json.log,循环 3 份后自动删最旧的。磁盘再也不怕被刷爆。
────────────────────
4. 查看 & 清理
4. 查看 & 清理
- 看日志
docker compose logs -f app - 手动清理
docker compose down或docker system prune -f --volumes
────────────────────
5. 与 Dockerfile/代码的关系
5. 与 Dockerfile/代码的关系
- 代码里只要继续
console.log()、fmt.Println()→ 写到 stdout/stderr logging:不负责“应用写文件日志”,只负责“容器 stdout/stderr 如何被 Docker 处理”。
────────────────────
一句话总结
“这些 stdout/stderr 日志用什么驱动、放到哪里、多大就轮转、保留几份”。
一句话总结
logging: 就是告诉 Docker:“这些 stdout/stderr 日志用什么驱动、放到哪里、多大就轮转、保留几份”。