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

相关推荐
SimonKing12 分钟前
大V说’AI替代不了你’,但现实是——用AI的人正在替代你
java·后端·程序员
IT_陈寒13 分钟前
SpringBoot里的这个坑差点让我加班到天亮
前端·人工智能·后端
BingoGo1 小时前
Laravel13 + Vue3 的免费可商用 PHP 管理后台 CatchAdmin V5.2.0 发布
后端·php·laravel
rannn_1111 小时前
【Redis|高级篇1】分布式缓存|持久化(RDB、AOF)、主从集群、哨兵、分片集群
java·redis·分布式·后端·缓存
weixin_408099671 小时前
【实战教程】EasyClick 调用 OCR 文字识别 API(自动识别屏幕文字 + 完整示例代码)
前端·人工智能·后端·ocr·api·安卓·easyclick
添尹1 小时前
Go语言基础之指针
开发语言·后端·golang
GreenTea10 小时前
一文搞懂Harness Engineering与Meta-Harness
前端·人工智能·后端
我是大猴子12 小时前
Spring代理类为何依赖注入失效?
java·后端·spring
码事漫谈13 小时前
手把手带你部署本地模型,让你Token自由(小白专属)
前端·后端
码农BookSea14 小时前
ReAct:让大模型学会边想边做
后端·ai编程