日志驱动与轮转参数
创建容器时决定日志去哪、留多少。默认的本地文件驱动不限制大小,一个刷屏的服务可以在一周内把宿主磁盘写满,随后引发一连串看似无关的故障。给每个容器设定单文件大小与保留份数,是最省事的一道护栏。
基本信息
| 驱动参数 | 指定日志驱动,常用本地文件类驱动 |
|---|---|
| 轮转参数 | 单文件大小上限与保留文件份数 |
| 默认情况 | 本地文件驱动,不限制大小与份数 |
| 全局默认 | 可在引擎配置里设默认值,只对新创建的容器生效 |
| 更改限制 | 已运行的容器无法在线修改,需要重建 |
典型使用场景
- 高频输出服务:请求量大、日志刷屏的服务必须限制大小
- 多服务混部:单机跑多个容器时为每个容器设定上限,避免互相挤占磁盘
- 临时调试容器:不希望日志落地占空间时选择丢弃类驱动或限制份数
- 统一规范:在引擎配置里设默认值,新容器自动继承
- 排障期临时放宽:需要长窗口日志时临时调整参数,事后恢复
常用示例
常用示例
docker run -d --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 nginx:1.27-alpine # 限制大小与份数
docker run -d --log-driver local --log-opt max-size=10m app/api:v1.2 # 使用本地驱动
docker inspect -f '{{.HostConfig.LogConfig.Type}} {{.HostConfig.LogConfig.Config}}' web # 核对配置
docker system df # 观察磁盘变化常见驱动对照
| 驱动 | 日志去向 | 取日志方式 |
|---|---|---|
| 本地文件类驱动 | 宿主数据目录下的文件 | 可直接用日志命令读取 |
| 系统日志类驱动 | 交给宿主系统日志服务 | 通过系统日志工具查看 |
| 集中采集类驱动 | 发送到远端收集服务 | 在采集平台查询 |
| 丢弃类驱动 | 不保存 | 无法读取,排障前先确认驱动类型 |
| 本地压缩驱动 | 宿主上的紧凑格式文件 | 可直接读取,适合高输出量服务 |
配置时的注意点
- 轮转参数只在创建容器时生效,事后调整需要重建容器
- 全局默认值不影响已有容器,改完记得处理存量实例
- 集中采集类驱动下本地取不到日志,排障要换到采集平台
- 丢弃类驱动会让排障无从下手,除明确不需要日志的场景外不要使用
- 轮转后旧文件会被删除,需要长期留存的日志要事先采集出去
本地文件类驱动默认不轮转,长期运行的容器会把宿主磁盘写满。磁盘写满会同时导致数据库、编排组件与其他服务异常,排查线索很容易被误导到别处。
集中采集类驱动与本地读取是互斥的:配置了远端采集后本地往往读不到内容,排障思路要同步切换。