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

相关推荐
VX:Fegn08958 分钟前
计算机毕业设计|基于springboot + vue乡村振兴服务系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
何中应28 分钟前
Bean的三种注入方式
开发语言·spring boot·后端·spring
席万里37 分钟前
基于Flask框架实现的一个在线考试系统
后端·python·flask
王中阳Go1 小时前
12 Go Eino AI应用开发实战 | 消息队列架构
人工智能·后端·go
沐森1 小时前
Rust 的CPU和IO操作
后端
Lucky_Turtle1 小时前
【Springboot】解决PageHelper在实体转Vo下出现total数据问题
java·spring boot·后端
無量1 小时前
AI工程化实践指南:从入门到落地
后端·ai编程
golang学习记1 小时前
Jetbrains 这个知名软件十年了!
后端
老华带你飞1 小时前
志愿者服务管理|基于springboot 志愿者服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
知其然亦知其所以然1 小时前
程序员的最强外挂:用 Spring AI 解锁智谱 AI 画图能力
后端·spring·程序员