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

Docker日志批量清理

时间:2024-07-09 10:35:18浏览次数:12  
标签:容器 log 批量 文件 Docker docker 日志

转发 :原文: https://blog.csdn.net/u013737132/article/details/134639909

Docker 容器日志查看

查看所有容器数据大小并按倒序排列

du -d1 -h /var/lib/docker/containers | sort -rh
  • du: 用于估算文件或目录空间使用量。
  • -d1: 仅显示深度为1的目录,即只显示直接子目录的信息。
  • -h: 以人类可读的格式显示文件大小。
  • /var/lib/docker/containers: 要查看的目录路径,这是 Docker 存储容器数据的默认路径。
  • sort -rh: 对 du 的输出进行排序。-r 表示逆序(降序),-h 表示以人类可读的格式排序(KB、MB、GB)
  •  

    Docker 容器日志清理

    单容器日志清理

    直接使用 rm -rf <container-id>-json.log 删除日志文件可能导致文件被占用,因为容器仍在运行,并且可能仍在使用该文件的文件描述符。这样的操作可能会导致文件系统空间不会立即释放。

    为确保不中断容器日志记录,并释放文件描述符,可以使用以下命令:

truncate -s 0 <container-id>-json.log

这个命令会将指定文件的大小截断为零字节,但不会删除文件。这样,容器的日志文件会被清空,但文件描述符仍然保持打开,不会影响正在运行的容器。

所有容器日志清理

创建了一个名为 clean_docker_logs.sh的清理脚本

touch clean_docker_logs.sh
vi clean_docker_logs.sh

 

#!/bin/bash

# Docker容器日志清理脚本

# 设置Docker日志文件存储路径
log_path="/var/lib/docker/containers"

# 获取所有容器ID
container_ids=$(ls -1 $log_path)

# 循环处理每个容器
for container_id in $container_ids; do
    # 构造日志文件路径
    log_file="${log_path}/${container_id}/${container_id}-json.log"

    # 检查日志文件是否存在
    if [ -f "$log_file" ]; then
        echo "清理容器 ${container_id} 的日志文件: ${log_file}"
        
        # 清空日志文件
        truncate -s 0 "$log_file"
    else
        echo "未找到容器 ${container_id} 的日志文件: ${log_file}"
    fi
done

echo "日志清理完成。"

 

将 clean_docker_logs.sh 脚本复制到 /usr/local/bin 目录(这个目录通常包含用户自己安装的可执行文件),并给予执行权限:

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

然后执行清理脚本:

sh /usr/local/bin/clean_docker_logs.sh

 

定时清理

如果想将清理容器日志的操作做成一个定时任务,可以使用 cron 作业。

编辑 cron 表

crontab -e

在文件末尾添加类似如下行,以每天凌晨凌晨执行清理任务为例:

0 0 * * * /usr/local/bin/clean_docker_logs.sh
第一个字段(0):分钟(0-59)
第二个字段(0):小时(0-23)
第三个字段():天(1-31)
第四个字段():月份(1-12)
第五个字段(*):星期几(0-6,0 表示星期日)

Docker 容器的日志大小可以通过 Docker Daemon 的配置进行全局设置,也可以通过在运行容器时指定参数进行单独设置。

设置 Docker 容器日志大小限制

全局设置

要在 Docker Daemon 上全局设置日志大小,你需要修改 Docker Daemon 的配置文件(通常是 /etc/docker/daemon.json)。

打开 Docker Daemon 配置文件:

nano /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 服务,以应用新的配置:

 systemctl restart docker

单容器设置

如果你想为单个容器设置不同的日志大小,可以在运行容器时使用 --log-opt 参数。

docker run -d --log-opt max-size=10m --log-opt max-file=3 your_image

这样会覆盖 Docker Daemon 全局设置,为该容器设置特定的日志大小。

 

常用命令

列出当前目录和文件的大小

du -h -x --max-depth=1 | sort -rh
  • du:用于估算文件空间使用情况。
  • -h:以人类可读的格式显示文件大小(例如,1K、234M、2G)。
  • -x:跳过不同文件系统的目录。
  • –max-depth=1:只显示指定目录的总计,不进入子目录。
  • sort -rh:以逆数值顺序(-r)排序,并使用人类可读的数值(-h)

 

标签:容器,log,批量,文件,Docker,docker,日志
From: https://www.cnblogs.com/lshan/p/18291219

相关文章

  • Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时
    章节内容上一节我们完成了:HiveServer2的介绍和配置安装修改core-sizehdfs-site实现集群的启动Beeline简单上手HCatalog简单上手背景介绍这里是三台公网云服务器,每台2C4G,搭建一个Hadoop的学习环境,供我学习。之前已经在VM虚拟机上搭建过一次,但是没留下笔记,这次......
  • 如何快速批量的下载贝壳看房VR全景图到本地电脑,实现离线浏览VR全景漫游,一招教会你
    无论你是专业摄影师、3D家装设计师,还是房产销售人员,经常会需要保存VR全景平台上的720全景图片到本地。直接用浏览器另存为常常无效,这时一款专门的全景图下载工具软件就派上用场了。轻松保存超清VR全景图片市面上有很多720全景图下载工具,但哪一款功能最强呢?我们推荐KD全景下......
  • c#winfrom+ffmpeg视频一键自动化剪辑批量生成视频软件(一)
    简单介绍一下1,设置字幕字体内容2,视频素材库自定义文件夹3,视频背景音乐库4,一键全自动配置剪辑,多选背景音乐,多选字体字幕样式,无限批量生成视频数量个数设置。我历时一个月开发了一套全新的视频批量剪辑软件,结合了C#WinForms和FFmpeg技术,旨在提供一种简单而功能强大的解决方案......
  • docker安装mysql8.0.23
    拉取镜像dockerpullmysql:8.0.23创建挂载文件mkdir-p/home/docker/mysql/confmkdir-p/home/docker/mysql/datamkdir-p/home/docker/mysql/logcd/home/docker/mysql/conftouchmy.cnf编辑my.cnfvimy.cnf内容如下:default-character-set=utf8[mysql]defa......
  • Ubuntu安装docker
    1、首先查看内核以及架构详细信息命令uname-aPS:安装的是较新版本的ubuntu22.04.2的可以省略(我安装的就是这个版本) 2、安装软件之前的尽可能下意识执行的三个命令sudoapt-getupdatesudoapt-getupgradesudoapt-getfull-upgrade 3、添加Docker库1)安装必要的证书......
  • docker基础
    Docker原理和概念镜像:类似于c++中的类,创建出一种具有独特属性的类容器:类似于c++中的实例化的对象仓库:储存镜像的地方,可以订阅别人创好的镜像,也可以上传自己的对象使用Client-Server架构模式,DockerClient和DockerDaemon之间,通过Socket或者RESTfulAPI进行通信安装配置......
  • IPython的宏功能:批量执行代码块功能
    IPython的宏功能:批量执行代码块功能项目概述本项目旨在利用IPython的宏功能,通过批量执行代码块来简化和自动化常见的重复任务。IPython提供了记录和执行宏的功能,可以极大地提高开发效率。我们将创建一个示例项目,展示如何使用IPython宏功能批量执行代码块。项目结构ipyth......
  • Docker容器的基本操作
    1容器操作添加容器的两种方法会自动添加生成一个随机名字#启动dockersystemctlstatusdockersystemctlstartdockersystemctldaemon-reload#重新加载docker配置systemctlrestartdocker#重启docker#1镜像操作 -dockersearch -dockerpull......
  • 构建自己的docker基础镜像
    构建自己的docker基础镜像构建一个完全定制的基础镜像意味着您需要从一个非常小的镜像(例如scratch镜像)开始,然后逐步添加您需要的所有内容。scratch镜像是一个空白的基础镜像,可以用来创建高度定制的容器环境。创建一个基础镜像构建debian基础镜像准备根文件系统:要构......
  • python批量处理文件保存到Excel文件中
            获取到了电脑所有软件,但是几百号人员,手动处理太麻烦,用python先读取文件内容,再把内容和文件名和一起保存到Excel表中,好统一处理。fromosimportpath,listdirimportchardetimportpandasaspdimporttkinterastkfromtkinterimportfiledialogfro......