当前位置: 首页 > news >正文

centos系统清理docker日志文件

在CentOS系统中,Docker日志文件的不断增长可能会占用大量磁盘空间,影响系统性能和正常运行。为了保持系统的健康状态,需要定期清理Docker日志文件。本文将详细介绍如何在CentOS系统上清理Docker日志文件的具体步骤和方法。

Docker日志文件位置

Docker容器的日志文件通常存储在以下位置:

/var/lib/docker/containers/<container_id>/

每个容器的日志文件通常命名为 <container_id>-json.log

检查日志文件大小

在清理之前,首先检查Docker日志文件的大小,以确定哪些日志文件需要清理。

sudo du -h /var/lib/docker/containers/*/*.log

这条命令将显示每个容器日志文件的大小。

清理日志文件的方法

方法一:手动清理日志文件

  1. 停止容器
    停止需要清理日志文件的容器。

    sudo docker stop <container_id>
  2. 清空日志文件
    清空日志文件的内容。

    sudo truncate -s 0 /var/lib/docker/containers/<container_id>/<container_id>-json.log
  3. 重启容器
    重启容器。

    sudo docker start <container_id>

方法二:使用日志轮替(logrotate)

使用 logrotate工具可以自动化管理日志文件的清理和归档。

  1. 安装logrotate
    如果系统中未安装 logrotate,可以使用以下命令安装。

    sudo yum install logrotate
  2. 配置logrotate
    创建Docker日志的 logrotate配置文件,如 /etc/logrotate.d/docker-container-logs

    sudo nano /etc/logrotate.d/docker-container-logs

    添加以下内容:

    /var/lib/docker/containers/*/*.log {rotate 7dailycompressmissingoknotifemptycopytruncate
    }

    配置解释:

    • rotate 7:保留7个旧的日志文件。
    • daily:每天轮替一次日志文件。
    • compress:压缩旧的日志文件。
    • missingok:如果日志文件缺失,不报错。
    • notifempty:如果日志文件为空,不轮替。
    • copytruncate:在截断原始日志文件之前,将其复制到新文件。
  3. 测试配置
    手动测试 logrotate配置,确保配置正确。

    sudo logrotate -f /etc/logrotate.d/docker-container-logs

方法三:调整Docker日志驱动和配置

Docker默认使用 json-file日志驱动。可以调整日志驱动和配置,限制日志文件的大小和数量。

  1. 编辑Docker配置文件
    编辑Docker守护进程配置文件 /etc/docker/daemon.json,添加或修改如下配置:

    {"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"}
    }

    配置解释:

    • "max-size": "10m":每个日志文件的最大大小为10MB。
    • "max-file": "3":最多保留3个日志文件。
  2. 重启Docker服务
    保存配置文件并重启Docker服务。

    sudo systemctl restart docker
     

自动化脚本清理

可以编写脚本定期清理日志文件,使用 crontab定时执行。

  1. 创建清理脚本
    创建脚本文件 /usr/local/bin/clean_docker_logs.sh

    sudo nano /usr/local/bin/clean_docker_logs.sh

    添加以下内容:

    #!/bin/bash
    find /var/lib/docker/containers/*/*.log -type f -exec truncate -s 0 {} ;
  2. 赋予执行权限

    sudo chmod +x /usr/local/bin/clean_docker_logs.sh
  3. 配置crontab
    使用 crontab配置定时任务,每天执行清理脚本。

    sudo crontab -e

    添加以下内容:

    0 0 * * * /usr/local/bin/clean_docker_logs.sh
http://www.sczhlp.com/news/2204/

相关文章:

  • go 语言特性
  • electron-egg实现全量更新和增量更新(下)
  • 【刷题笔记】P2824 [HEOI2016/TJOI2016] 排序
  • BT134-600-ASEMI双向可控硅BT134-600
  • JUC学习-22-源码解读(线程池如何创建线程)
  • 以dotnet为例,创建软路由
  • MyEMS开源能源管理系统核心代码解读026
  • 面试官说:在区块链交易所的高并发环境下,不依靠数据库事务保持一致性,对大的事务进行拆分,比如用对账系统保证一致性,最终数据库仅仅是持久化的功能。如何理解这种思想 - Charlie
  • 范畴论基础概念和 Yoneda Lemma 定理
  • API分享:利用API接口实现批量获取淘宝商品详情的主图视频
  • 点亮LED灯
  • 【汽车电子】一个系统
  • AtCoder Beginner Contest 416 - F - Paint Tree 2 题解
  • 认识Arduino 电路基础知识
  • 基于Java+Springboot+Vue开发的网上服装销售管理系统源码+运行步骤
  • 致千早爱音
  • 一文读懂!OA办公系统开发流程详解!
  • Linux cgroup 常用命令详解
  • 使用 Loki 配置告警,如何将原始日志内容添加告警到注释中?
  • ELK专业系统日志分析
  • 记一次调试西门子V20变频器过程(原创)
  • disruptor容灾方案 - Charlie
  • 从混乱到高效:多台服务器文件同步3大避坑指南(附工具推荐)
  • mysql中有了长文本类型为什么还需要短文本类型?
  • Unity Shader 参考文档 - 第一部分
  • 怪奇错误 - Gon
  • 最简单的WEB服务器
  • 第二十日
  • 如何用 mc 对 RustFS 进行存储桶的创建和查询?
  • HAMi vGPU 原理分析 Part3:hami-scheduler 工作流程分析