首页 > 其他分享 >Docker日志清理

Docker日志清理

时间:2024-12-27 08:59:22浏览次数:2  
标签:文件 清理 logrotate docker 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

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

清理日志文件的方法
方法一:手动清理日志文件
停止容器:
停止需要清理日志文件的容器。

sudo docker stop <container_id>

清空日志文件:
清空日志文件的内容。

sudo truncate -s 0 /var/lib/docker/containers/<container_id>/<container_id>-json.log

重启容器:
重启容器。

sudo docker start <container_id>

方法二:使用日志轮替(logrotate)
使用 logrotate工具可以自动化管理日志文件的清理和归档。

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

sudo yum install logrotate

配置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:在截断原始日志文件之前,将其复制到新文件。
测试配置:
手动测试 logrotate配置,确保配置正确。

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

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

编辑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个日志文件。
重启Docker服务:
保存配置文件并重启Docker服务。

sudo systemctl restart docker

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

创建清理脚本:
创建脚本文件 /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 {} ;

赋予执行权限:

sudo chmod +x /usr/local/bin/clean_docker_logs.sh

配置crontab:
使用 crontab配置定时任务,每天执行清理脚本。

sudo crontab -e

添加以下内容:

0 0 * * * /usr/local/bin/clean_docker_logs.sh

分析说明表
方法 优点 缺点
手动清理日志文件 简单直接,适合临时清理 需要手动操作,无法自动化,适合小规模使用
使用logrotate 自动化管理日志文件,配置灵活 需要额外配置logrotate
调整Docker日志驱动和配置 自动限制日志文件大小和数量,减少手动干预 可能需要重启Docker服务,配置不当可能影响日志完整性
自动化脚本清理 自动化程度高,定期清理日志,适合大规模使用 需要编写和维护脚本,可能清理频率过高影响日志记录的完整性
总结
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。

转自-原文-https://developer.aliyun.com/article/1635632

标签:文件,清理,logrotate,docker,Docker,日志
From: https://www.cnblogs.com/velloLei/p/18634515

相关文章

  • 使用容器运行Nginx应用及Docker命令
    使用容器运行Nginx应用及Docker命令一、使用容器运行Nginx应用1.1使用dockerrun命令运行Nginx应用1.1.1观察下载容器镜像过程查找本地容器镜像文件执行命令过程一:下载容器镜像#dockerrun-dnginx:latestUnabletofindimage'nginx:latest'locallylatest:......
  • Docker之dockerfile
    DockerFileDockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。创建Dockerfile文件viDockerfile具体内容如下:FROMopenjdk:8-jdk-alpineVOLUME/tmpADDlearn-docker-storage-1.0-SNAPSHOT.jarapp.jarEXPOSE8003ENTRYPOINT["......
  • 2024年最新国内可用的Docker镜像加速器地址汇总
    Docker镜像加速器列表资源收集于网络,如果侵犯了您的权益,请联系我删除相关信息。 状态地址✅https://docker.1panel.live✅https://hub.rat.dev✅https://docker.actima.top✅https://atomhub.openatom.cn✅https://docker......
  • Docker部署vue
    docker部署vue首先你已经安装好了docker获取nginx镜像dockerpullnginx:1.25.0创建nginxconfig配置文件在项目根目录下创建文件default.conf,写入如下内容server{listen80;server_namelocalhost;#修改为docker服务宿主机的iplocation/{......
  • linux系统下docker安装mysql
    记录一下步骤:1、拉取镜像:dockerpullvijayan/mysql5.62、创建mysql挂载用数据卷cd/data/software/mysqlmkdirconfmkdirlogmkdirdata3、创建mysql配置文件cd/data/software/mysql/conf vimmy.conf[client]#端口号port=3306[mysql]no-beepdefault-character......
  • docker配置nginx
    docker部署项目是老生常谈的话题了。此文仅供给从未部署过的开发者查阅安装docker,这个自行百度。参考链接https://www.runoob.com/docker/centos-docker-install.html基于docker安装nginx镜像,dockerpullnginx运行docker容器,dockerrun-p8090:80--nameng-dnginx创......
  • ftp与sftp server docker部署
    目录ftpserver配置项forwindowssftpserver配置项ftpserverversion:'3.9'services:vsftpd:image:fauria/vsftpdcontainer_name:vsftpdenvironment:-FTP_PASS=ftp-FTP_USER=ftp-LOG_STD......
  • Docker镜像优化
    1、概述Docker作为一款广受欢迎的容器化技术,为开发者提供了极大的便利。它能够将应用程序以及其全部的依赖项整合并打包,形成一个标准化的独立单元——镜像。对Docker镜像进行优化意义非凡,一方面可以显著降低镜像的存储空间占用,进而大幅提升其下载与部署的速率;另一方面,还......
  • 在 Docker 中部署 Jenkins,并完成项目的构建和发布
    前言Jenkins的主要作用是帮助你,把需要在本地机器完成的Maven构建、Docker镜像发布、云服务器部署等系列动作全部集成在一个服务下。简化你的构建部署操作过程,因为Jenkins也被称为CI&CD(持续集成&持续部署)工具。提供超过1000个插件(Maven、Git、NodeJs)来支持构......
  • Kubernetes 为什么减少对 Docker 的依赖:容器运行时演进背后的技术考量
    1、概述在当今的技术领域,容器技术的崛起与发展离不开Docker和Kubernetes的紧密合作。Docker以其创新性的容器化技术,推动了容器在全球范围内的广泛应用,为开发者提供了从容器镜像构建、容器启动与管理到镜像分发等一站式服务。Kubernetes则专注于大规模容器的编排和自动......