docker容器日志处理

通过docker运行nginx服务,把对应nginx的服务日志直接通过docker logs 显示的日志,主要是基于容器 stdout/stderr来实现。在日志增加的同时,需要考虑日志存储和增长,避免后期磁盘空间被占满。本文简单介绍下这种场景下,如何避免日志无限增长。

一、容器常见日志类型:

Docker daemon.json 日志驱动对比表

日志驱动 (log-driver) 特点 是否支持 docker logs 适用场景 配置示例 (/etc/docker/daemon.json)
json-file (默认) 默认驱动,日志存成 JSON 文件,文件较大,需手动配置轮转 ✅ 支持 开发/小项目 json\n{\n "log-driver": "json-file",\n "log-opts": {\n "max-size": "10m",\n "max-file": "3"\n }\n}\n
local Docker 推荐,高效二进制存储,自动轮转,节省磁盘空间 ✅ 支持 生产/单机服务 json\n{\n "log-driver": "local",\n "log-opts": {\n "max-size": "10m",\n "max-file": "5"\n }\n}\n
syslog 将日志写入宿主机 syslog,统一日志管理 ❌ 不支持 需要系统日志集中化 json\n{\n "log-driver": "syslog",\n "log-opts": {\n "syslog-address": "udp://192.168.1.100:514"\n }\n}\n
journald 日志写入 systemd,用 journalctl 查看 ❌ 不支持 systemd 系统 json\n{\n "log-driver": "journald"\n}\n
fluentd 推送到 Fluentd,方便集中处理 ❌ 不支持 分布式 / 企业级 json\n{\n "log-driver": "fluentd",\n "log-opts": {\n "fluentd-address": "localhost:24224"\n }\n}\n
awslogs 推送到 AWS CloudWatch Logs ❌ 不支持 云环境 (AWS) json\n{\n "log-driver": "awslogs",\n "log-opts": {\n "awslogs-group": "my-group",\n "awslogs-region": "us-east-1"\n }\n}\n

二、处理方案有如下:

  • 单个日志文件最大 50 MB
  • 最多保留 3 个日志文件(超过后旧的会被删除)

1、容器指令运行:

bash 复制代码
docker run -d \
  --name mynginx \
  --log-driver=json-file \
  --log-opt max-size=50m \
  --log-opt max-file=3 \
  nginx

2、docker compose

yaml 复制代码
version: "3.9"
services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    logging:
      driver: "json-file"
      options:
        max-size: "50m"
        max-file: "3"

3、全局修改 Docker 配置

在宿主机修改 /etc/docker/daemon.json

json 复制代码
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

修改完后重启服务

复制代码
sudo systemctl restart docker

三、查看容器日志配置情况

ini 复制代码
docker inspect 容器ID_or_名字 --format='{{.HostConfig.LogConfig}}'

输出结果如下:

arduino 复制代码
{json-file map[max-size:10m max-file:3]}

四、参考地址:

docs.docker.com/engine/logg...

相关推荐
我是哪吒4 小时前
分布式微服务系统架构第170集:Kafka消费者并发-多节点消费-可扩展性
后端·面试·github
Badman5 小时前
分布式系统下的数据一致性-Redis分布式锁
redis·分布式·后端
Java水解5 小时前
盘点那些自带高级算法的SQL
后端
一只叫煤球的猫6 小时前
2025年基于Java21的的秒杀系统要怎么设计?来点干货
后端·面试·性能优化
方圆想当图灵6 小时前
《生产微服务》评估清单 CheckList
后端·微服务
服务端技术栈6 小时前
历时 1 个多月,我的第一个微信小程序「图片转 Excel」终于上线了!
前端·后端·微信小程序
计算机毕业设计指导6 小时前
基于Spring Boot的幼儿园管理系统
spring boot·后端·信息可视化
年轻的麦子6 小时前
Go 框架学习之:go.uber.org/fx项目实战
后端·go
小蒜学长6 小时前
django全国小米su7的行情查询系统(代码+数据库+LW)
java·数据库·spring boot·后端