centos系统清理docker日志文件

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 通过以上方法,可以有效清理和管理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和调整日志驱动等多种方式,确保系统的高效运行。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
23天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
190 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
12天前
|
Linux 开发工具 Windows
CentOS8 64位系统 搭建内网穿透frp
【10月更文挑战第23天】本文介绍了如何在Linux系统上搭建frp内网穿透服务,并配置Windows客户端进行访问。首先,通过系统信息检查和软件下载,完成frp服务端的安装与配置。接着,在Windows客户端下载并配置frpc,实现通过域名访问内网地址。最后,通过创建systemd服务,实现frp服务的开机自动启动。
48 14
|
7天前
|
Windows Python
如何反向读取Windows系统日志EVTX文件?
以下是如何反向读取Windows系统日志EVTX文件
17 2
|
25天前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
47 1
|
6月前
|
前端开发 jenkins 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
169 1
|
1月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
629 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
2月前
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
138 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
2月前
|
Docker 容器
centos7.3之安装docker
centos7.3之安装docker
|
3月前
|
存储 关系型数据库 Linux
在CentOS 7上安装和使用Docker的方法
在CentOS 7上安装和使用Docker的方法
492 1
|
3月前
|
Linux Docker 容器
在CentOS上安装Docker的指南:
【8月更文挑战第19天】介绍在CentOS上安装Docker的过程:首先确认CentOS版本兼容,建议使用7或更高版本,并通过`yum update -y`更新系统。安装Docker时推荐使用官方仓库方法,需安装`yum-utils`等工具,设置Docker仓库简化安装流程。可选配置国内镜像源(如阿里云)提升下载速度。亦可通过RPM包离线安装。安装后启动Docker服务并通过`systemctl enable docker`设为开机启动。最后,运行`docker run hello-world`验证安装。如遇问题,使用`sudo journalctl -u docker`查看日志排错。
372 0