全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

日志轮转与大小控制

容器日志持续增长会占满磁盘,下面介绍日志轮转与大小控制方法。

日志轮转配置

容器级别

Bash
# 运行容器时配置
docker run -d \
  --name my-app \
  --log-driver json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  my-app

参数说明:

  • max-size:单个日志文件最大大小
  • max-file:保留的日志文件数量

全局配置

JSON
// /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

轮转机制

YAML
日志文件轮转示例(max-size=10m, max-file=3):

my-app-json.log        # 当前日志(写入中)
my-app-json.log.1      # 上一次轮转
my-app-json.log.2      # 上上次轮转
# 超过 max-file 的旧日志被删除

当日志达到 max-size 时,当前日志重命名为 .1,依次类推,超过 max-file 的删除。

计算磁盘占用

Bash
总磁盘占用 = max-size × max-file

示例:
max-size = 10m
max-file = 3
总占用 = 10m × 3 = 30m(每容器)

Compose 配置

Bash
version: '3.8'

services:
  app:
    image: my-app
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

日志标签

Bash
# 添加标签区分容器
docker run -d \
  --name my-app \
  --log-driver json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  --log-opt labels=production_status \
  --log-opt env=os,customer \
  my-app

监控日志大小

Bash
# 查看日志文件大小
ls -lh /var/lib/docker/containers/*/

# 查看磁盘使用
docker system df

# 查看卷和日志使用
docker system df -v

清理日志

手动清理

JSON
# 停止 Docker
sudo systemctl stop docker

# 清理日志
sudo rm -rf /var/lib/docker/containers/*/*.log

# 启动 Docker
sudo systemctl start docker

清理日志前必须停止 Docker,否则日志文件被占用无法删除。

自动清理

JSON
# 定时清理脚本(crontab)
#!/bin/bash
# /etc/cron.daily/docker-log-cleanup

find /var/lib/docker/containers/ -name "*.log" -size +50M -delete

推荐配置

开发环境

JSON
{
  "log-opts": {
    "max-size": "50m",
    "max-file": "5"
  }
}

生产环境

text
{
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

日志集中化(ELK)

text
{
  "log-driver": "fluentd",
  "log-opts": {
    "fluentd-address": "localhost:24224"
  }
}

要点总结

  • max-size 限制单个日志文件大小,max-file 限制保留文件数
  • 总磁盘占用 = max-size × max-file,合理配置防止占满
  • 容器级别和全局均可配置,Compose 通过 logging 配置
  • 清理日志前必须停止 Docker,否则文件被占用
  • 生产环境建议 10m × 3 = 30m 每容器

📝 发现内容有误?点击此处直接编辑

← 上一篇 日志查看与排查
下一篇 → 日志驱动配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库