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...

相关推荐
喵个咪8 分钟前
Go-Wind HTTP 服务器从入门到精通
后端·http·go
hunterandroid13 分钟前
Hilt 依赖注入:从手动 new 到自动装配
后端
喵个咪14 分钟前
Go-Wind gRPC 服务器从入门到精通
后端·go·grpc
喵个咪14 分钟前
Go-Wind GraphQL 服务器从入门到精通
后端·graphql
青青子衿悠悠我心14 分钟前
Docker与Kubernetes的十年战争与融合
后端
AI小老六15 分钟前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
云技纵横16 分钟前
@Transactional 到底要不要加 rollbackFor?一次数据不一致事故讲清楚
后端·面试
Csvn25 分钟前
日志分析进阶 — Logwatch 与 GoAccess 实战
后端
Moment25 分钟前
牛逼,NextJs 从 16.3 开始全面拥抱 Agent Native 🥰🥰🥰
前端·后端·面试