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

批量清理docker 容器日志

在日常开发过程中docker容器可能会有很大的日志占用空间,尝尝需要定期清理。下面提供查看容器日志大小和清理日志的一种解决方式

效果图

查看容器日志

bash docker_log_size.sh

在这里插入图片描述

清理日志

bash docker_clean_logs.sh

在这里插入图片描述

脚本

  • docker_log_size.sh
#!/bin/bash

# 获取所有正在运行的容器ID
containers=$(docker ps -q)

# 打印表头
printf "%-30s %-15s %s\n" "容器名称" "日志文件大小" "日志文件路径"
echo "-----------------------------------------------------------"

# 循环遍历每个容器ID
for container in $containers; do
    # 获取容器名称
    container_name=$(docker inspect --format='{{.Name}}' $container | sed 's/^\///')

    # 获取容器的日志文件路径
    log_path=$(docker inspect --format='{{.LogPath}}' $container)

    # 获取日志文件大小
    log_size=$(du -h $log_path 2>/dev/null | awk '{print $1}')

    # 输出容器名称、日志文件大小和路径
    if [ -n "$log_size" ]; then
        printf "%-30s %-15s %s\n" "$container_name" "$log_size" "$log_path"
    fi
done | sort -k2 -hr

  • docker_clean_logs.sh
#!/bin/bash

# 显示菜单选项
echo "请选择操作:"
echo "1. 全量清理所有容器日志"
echo "2. 清理指定容器日志(输入容器ID或名称,多个容器间用逗号隔开)"
read -p "输入选项编号(1或2): " choice

# 清理日志的函数
clean_logs() {
    for container in $1; do
        # 获取容器的日志文件路径
        log_path=$(docker inspect --format='{{.LogPath}}' $container 2>/dev/null)

        # 判断日志路径是否存在
        if [ -f "$log_path" ]; then
            echo "清理容器日志:$container (路径: $log_path)"
            cat /dev/null > "$log_path"  # 清空日志文件内容
        else
            echo "无法找到容器 $container 的日志文件,跳过..."
        fi
    done
}

if [ "$choice" -eq 1 ]; then
    # 选项1:清理所有容器日志
    containers=$(docker ps -q)
    clean_logs "$containers"
elif [ "$choice" -eq 2 ]; then
    # 选项2:清理指定容器日志
    read -p "请输入容器ID或名称(多个容器间用逗号隔开): " input
    # 将输入的容器名称或ID转换为数组
    IFS=',' read -ra container_array <<< "$input"

    # 清理指定容器的日志
    clean_logs "${container_array[@]}"
else
    echo "无效的选项编号,请重新运行脚本并选择正确的选项。"
fi

总结

大家根据自己需要修改,如有问题欢迎留言讨论。


http://www.kler.cn/a/511421.html

相关文章:

  • 线性代数概述
  • 利用R计算一般配合力(GCA)和特殊配合力(SCA)
  • Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘
  • InVideo AI技术浅析(五):生成对抗网络
  • SAP POC 项目完工进度 - 收入确认方式【工程制造行业】【新准则下工程项目收入确认】
  • owasp SQL 注入-03 (原理)
  • springboot基于小程序的会宁县周边乡村旅游服务系统
  • ScratchLLMStepByStep:训练自己的Tokenizer
  • JAVA安全—JWT攻防Swagger自动化Druid泄露
  • 03_UI自适应
  • 《AI赋能中国制造2025:智能变革,制造未来》
  • 正态分布检验(JB检验和威尔克检验)和斯皮尔曼相关系数(继上回)
  • 2025年01月18日Github流行趋势
  • 多语言插件i18n Ally的使用
  • Android-Gradle-自动化多渠道打包
  • 【Docker】Supervisor 实现单容器运行多服务进程
  • macOS查看当前项目的 tree 结构
  • 【Envi遥感图像处理】001:Envi5.6完整版下载安装教程
  • 使用Python爬虫获取1688网站实力档案信息
  • 算法(蓝桥杯)贪心算法3——二维数组排序与贪心算法——活动选择
  • linux之进程信号(信号保存 信号处理)
  • 深入浅出 Go语言并发安全字典 sync.Map:原理、使用与优化
  • ESP RainMaker轻量级云平台方案,产品私有云部署,物联网无线应用
  • vllm多卡部署Qwen2.5-72B-Instruct-GPTQ-Int4
  • 创建Spring boot项目的五种方式
  • 游戏引擎学习第83天