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

相关推荐
武子康5 分钟前
大数据-210 如何在Scikit-Learn中实现逻辑回归及正则化详解(L1与L2)
大数据·后端·机器学习
Coder_Boy_15 分钟前
Spring Boot 事务回滚异常 UnexpectedRollbackException 详解(常见问题集合)
java·spring boot·后端
风象南17 分钟前
SpringBoot 实现网络限速
后端
源代码•宸21 分钟前
Golang语法进阶(定时器)
开发语言·经验分享·后端·算法·golang·timer·ticker
计算机学姐25 分钟前
基于SpringBoot的汽车租赁系统【个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·汽车·推荐算法
好好研究29 分钟前
SpringBoot小案例打包执行流程
java·spring boot·后端
BingoGo30 分钟前
免费可商用商业级管理后台 CatchAdmin V5 正式发布 插件化与开发效率的全面提升
vue.js·后端·php
IT_陈寒40 分钟前
SpringBoot 3.0实战:这5个新特性让你的开发效率提升50%
前端·人工智能·后端
ling-4541 分钟前
ssm-day07 springboot3、Mybatis-Plus、springboot实战
java·spring boot·后端
a程序小傲1 小时前
得物Java面试被问:边缘计算的数据同步和计算卸载
java·开发语言·数据库·后端·面试·golang·边缘计算