首页/云/Docker 容器速查/compose logging 日志驱动与截断
Compose 编排55 条

compose logging 日志驱动与截断

为服务配置日志驱动与选项:限制单文件大小与保留数量,避免长跑服务的日志文件把磁盘占满。

Docker 容器速查云更新于 2026-10-13

字段是干什么的

logging 用来为单个服务指定日志驱动与选项。Compose 默认沿用守护进程的 json-file 驱动:容器 stdout/stderr 被写成宿主上的 JSON 文件,默认不轮转。长跑服务只靠默认值,日志会一直增长直到撑满磁盘,所以生产编排里普遍显式写上 max-size 与 max-file。

基本信息

适用平台Docker Compose v2 / Docker Engine
字段logging.driver 与 logging.options
常用组合json-file + max-size + max-file
其他驱动local、syslog、journald、fluentd、none
读日志工具docker compose logs 依赖当前驱动的支持

典型使用场景

  • 上线前统一加轮转,避免 /var/lib/docker/containers 下的日志文件累积撑盘
  • 日志无长期价值的高频批量任务用 driver: none 丢弃,减少写盘
  • 接入集中采集:改用 syslog 或 fluentd 驱动投送到日志平台
  • 按服务差异化配置:关键服务保留 3 个文件,噪音服务只留 1 个
  • 排障期临时放宽上限,问题定位后恢复常规参数

配置示例

配置示例
services:
  api:                    # 常驻服务:单文件 10MB,最多保留 3 个
    image: app/api:1.4.2
    logging:
      driver: json-file
      options:
        max-size: '10m'
        max-file: '3'
  batch:                  # 批量任务:日志无价值时直接丢弃
    image: app/batch:1.4.2
    logging:
      driver: none
# 查看单个服务日志:docker compose logs --tail=20 api

字段取值与含义

字段含义取值提示
driver日志驱动默认 json-file,可选 local/syslog/journald/fluentd/none
options.max-size单个日志文件上限如 10m、50m,超过后切分新文件
options.max-file保留的历史文件个数与 max-size 搭配才算完成的轮转策略
driver: none不写任何日志排障期对关键服务开启会失去现场
驱动换成非 json-file 之后 docker compose logs 常常读不到内容(日志被送往 journald 或远端平台),排障前先确认当前服务用的是哪个驱动。
轮转参数在容器创建时写入,改完要执行 docker compose up -d 重建容器才生效;daemon.json 里配置的全局默认值同样只对新创建的容器起作用。

参数取值建议

  • max-size 从 10m 起步:单文件过大时 docker logs 与采集端读取都会变慢
  • max-file 与磁盘换算:10m 乘 3 约 30MB,按服务日志量决定是否加大
  • 调试期临时调大 max-file,问题定位完就恢复,避免长期占用磁盘
  • 多服务共用一套参数时用 YAML 锚点或 .env 变量,减少逐服务抄写与漏配

易错点

  • 只设 max-size 不设 max-file:单个文件有上限,但文件个数仍会持续增加,两个参数必须成对配置才闭环
  • 改配置后只做 restart 不重建容器:日志仍按旧参数无上限增长,磁盘告警照旧出现
  • 给关键服务配 driver: none:故障时没有任何日志可查,只建议用于明确无保留价值的重复性批量任务
  • 切换驱动前没确认采集链路:日志平台突然断流会先触发告警,排查方向容易被带偏到业务侧

数据来源与参考

  • Docker 官方文档:Compose logging 参考(docs.docker.com/reference/compose-file/services)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌