centos系统清理docker日志文件

简介: 通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。

在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 7
        daily
        compress
        missingok
        notifempty
        copytruncate
    }
    ​
    

    配置解释:

    • 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
    ​
    

分析说明表

方法 优点 缺点
手动清理日志文件 简单直接,适合临时清理 需要手动操作,无法自动化,适合小规模使用
使用logrotate 自动化管理日志文件,配置灵活 需要额外配置logrotate
调整Docker日志驱动和配置 自动限制日志文件大小和数量,减少手动干预 可能需要重启Docker服务,配置不当可能影响日志完整性
自动化脚本清理 自动化程度高,定期清理日志,适合大规模使用 需要编写和维护脚本,可能清理频率过高影响日志记录的完整性

总结

通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
WGLOG日志管理系统是怎么收集日志的
WGLOG通过部署Agent客户端采集日志,Agent持续收集指定日志文件并上报Server,Server负责展示与分析。Agent与Server需保持相同版本。官网下载地址:www.wgstart.com
|
6月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
616 122
基于docker搭建监控系统&日志收集
|
9月前
|
监控 API 开发工具
HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
本文深入解析HarmonyOS Next的HiLog日志系统,涵盖日志级别、核心API、隐私保护与高级回调功能,助你从入门到精通掌握这一重要开发工具。
|
6月前
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
805 2
|
8月前
|
存储
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://www.wgstart.com/wglog/docs9.html
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
552 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
存储 JSON Go
PHP 日志系统的最佳搭档:一个 Go 写的远程日志收集服务
为了不再 SSH 上去翻日志,我写了个 Go 小脚本,用来接收远程日志。PHP 负责记录日志,Go 负责存储和展示,按天存储、支持 API 访问、可远程管理,终于能第一时间知道项目炸了。
273 10
|
Ubuntu Shell 应用服务中间件
Docker -- 系统整洁之道 -- 1
在上文Docker – 系统整洁之道 – 0中已经对Docker是什么,安装Docker以及怎么运行一个简单的容器有了初步了解,这篇文章介绍Docker的一些命令和Docker镜像的使用及操作。
1635 0
|
Ubuntu Linux Docker
Docker -- 系统整洁之道 -- 0
在我的小 rmbp 256G的硬盘里,实在是装不下100多个G的虚拟机了,所以想把一些东西迁移到这两年很火的Docker下,Docker以前也有过一两次,只是按着别人给的用法用的,具体的一些细节并没有深入,和git一样,这么牛掰的东西怎么能不好好学一些呢? Docker和虚拟机的区别 Docker是一种容器,虚拟机是一种管理程序虚拟机化(hypervisor virtualization,HV)。
1750 0