【Docker系列】Docker 日志管理:批量删除策略与实践

news2024/9/22 15:43:06

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.基础信息
      • 1.Docker 日志的存储与问题
      • 2.日志管理策略
    • 二.批量删除 Docker 日志
      • 1. 使用 `docker logs` 命令
      • 2. 直接删除日志文件
      • 3. 使用 `truncate` 命令
      • 4. 编写脚本自动化处理
      • 5. 使用 Docker 插件或第三方工具
    • 三.服务器演练
      • 1.需求信息
      • 2.实现步骤

一.基础信息

在现代的软件开发和运维实践中,Docker 容器技术因其轻量级、可移植性和快速部署的特点而广受欢迎。然而,随着容器数量的增加,容器产生的日志文件也会随之增多,这些日志文件可能会占用大量的磁盘空间,影响系统性能。因此,合理管理 Docker 日志,特别是批量删除不再需要的日志,成为运维人员必须面对的问题。
在这里插入图片描述

1.Docker 日志的存储与问题

Docker 容器的日志默认存储在宿主机的 /var/lib/docker/containers/ 目录下,每个容器的日志文件都存放在这个目录下以容器 ID 命名的子目录中。随着容器的运行,日志文件会不断增长,如果不加以管理,可能会导致以下问题:

  1. 磁盘空间耗尽:日志文件占用大量磁盘空间,可能会导致磁盘空间不足,影响系统运行。
  2. 日志分析困难:日志文件过大,难以进行有效分析,降低了日志的可用性。
  3. 备份困难:日志文件过多,备份和恢复操作变得复杂且耗时。

2.日志管理策略

为了解决上述问题,可以采取以下日志管理策略:

  1. 日志轮转:通过配置日志轮转,定期清理旧的日志文件,释放磁盘空间。
  2. 日志级别控制:根据需要设置日志级别,减少不必要的日志输出。
  3. 日志存储策略:将日志存储到外部存储系统,如 ELK Stack(Elasticsearch, Logstash, Kibana)或云存储服务。
  4. 定期审核:定期审核日志文件,删除不再需要的日志。

二.批量删除 Docker 日志

在实际操作中,批量删除 Docker 日志可以通过多种方式实现,以下是一些常见的方法:
在这里插入图片描述

1. 使用 docker logs 命令

虽然 docker logs 主要用于查看容器日志,但它也可以用来删除日志。通过设置 --tail 参数为 0,可以清空容器的日志:

docker logs --tail=0 <container_id_or_name>

这种方法不会删除日志文件,只是清空了日志内容。

2. 直接删除日志文件

可以直接删除 /var/lib/docker/containers/ 目录下特定容器的日志文件。例如:

rm -rf /var/lib/docker/containers/<container_id>/*.log

这种方法会永久删除日志文件,操作前需要确保不再需要这些日志。

3. 使用 truncate 命令

使用 truncate 命令可以清空日志文件而不删除文件本身:

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

这种方法适用于需要保留日志文件但清空内容的场景。

4. 编写脚本自动化处理

为了批量处理多个容器的日志,可以编写脚本来自动化这一过程。以下是一个简单的 Bash 脚本示例:

#!/bin/bash

# 定义要删除日志的容器列表
containers=("container1" "container2" "container3")

# 遍历容器列表,删除日志
for container in "${containers[@]}"; do
    echo "Deleting logs for $container"
    rm -rf /var/lib/docker/containers/$(docker inspect --format '{{.Id}}' $container)/*.log
done

5. 使用 Docker 插件或第三方工具

市面上有许多 Docker 插件和第三方工具可以帮助管理日志,如 Portainer、Weave Scope 等。这些工具提供了图形界面,可以更方便地管理日志。

三.服务器演练

1.需求信息

服务器磁盘空间不足,排查发现 docker 的日志占用很大,如何批量删除日志呢?

2.实现步骤

#!/bin/bash
echo "==================== start clean docker containers logs =========================="

logs=$(find /var/lib/docker/containers/ -name *-json.log)

for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done
echo "==================== end clean docker containers logs   =========================="

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剪画:自媒体人都是这么保存无字幕视频素材的!

在数字媒体的精彩世界中&#xff0c;视频如璀璨星辰照亮我们的生活。 无论是教育的启迪、娱乐的放松还是信息的传播&#xff0c;视频都担当着关键角色。 但水印&#xff0c;那以文字或图形形式出现在视频中的印记&#xff0c;虽有声明版权之效&#xff0c;却也常给我们带来困扰…

基于web网上十字绣专营店设计与实现

&#xff08;一&#xff09;业务流程分析 没有实现网上销售的十字绣专营店&#xff0c;即店面销售方式&#xff0c;店面需要专人看管&#xff0c;而且销售范围有限&#xff0c;面向的对象很受限制&#xff0c;销售情况需要店主手工记录到账簿&#xff0c;以备利润汇总&#xf…

脚手架工具的应用(前端和后端搭建)

前端 一、安装 Node.js 环境 使用npm下载镜像 查看镜像&#xff1a;npm config get registry 切换淘宝镜像&#xff1a;npm config set registry https://registry.npmmirror.com 还原镜像&#xff1a;npm config set registry https://registry.npmjs.org 二、使用 Vue.js 脚…

BugKu练习记录:ok

题目&#xff1a; 从特征上看是BrainFuck中的Ook加密&#xff0c;直接用工具解

三天速成数学建模国赛国奖全攻略

这里写目录标题 国赛考点&#x1f5d2;️&#x1f5d2;️01 国赛是如何评奖的&#xff1f;02 国赛历年题型和模型算法1&#xff09;国赛赛题特点2&#xff09;历年国赛赛题类型 建模手三天快速提升计划✨✨01 第一天&#xff1a;模型分类及国赛常见模型的用法了解1&#xff09;…

弹窗相关操作

弹窗使用 文章目录 弹窗使用弹窗-新增表单修改弹窗 弹窗-新增表单 拖拽弹出层组件&#xff0c;补充表单信息 2.点击表单&#xff0c;绑定数据库模型&#xff0c;绑定字段 3.新增弹窗按钮绑定打开或关闭弹出层事件 4.弹窗保存按钮依次绑定 保存表单&#xff0c;打开或关闭弹…

技术风暴中的应急策略:开发团队如何应对突发故障与危机

文章目录 每日一句正能量前言快速响应与问题定位策略建立健全的应急预案和备份机制事后总结与持续改进后记 每日一句正能量 在工作上遇到挫折&#xff0c;于是退缩了&#xff0c;说因为难&#xff1b;在生活上遇到困难难&#xff0c;于是抱怨了&#xff0c;说因为苦&#xff1b…

Docker安装Neo4j图数据库和APOC插件

文章目录 一、前言二、安装Neo4j三、测试Neo4j四、安装APOC插件五、测试APOC插件 一、前言 官方文档&#xff1a;https://neo4j.com/docs/operations-manual/current/docker/introduction/ 二、安装Neo4j 我这里以 5.23.0 版的 Neo4j 为例 拉取镜像 docker pull neo4j:5.23.0…

暴搜、深搜、回溯算法题集

文章目录 1. 全排列2. 全排列II3. 子集4. 子集II5. 找出所有子集的异或总和再求和6. 电话号码的字母组合7. 括号生成8. 组合9. 目标和10. 组合总和11. 组合总和II12. 组合总和III13. 字母大小写全排列14. 优美的排列15. N 皇后16. 有效的数独17. 解数独18. 单词搜索19. 黄金矿工…

Docker 的安全优化

目录 1 Docker安全优化思路 1.1 命名空间隔离的安全 1.2 控制组资源控制的安全 1.3 内核能力机制 1.4 Docker服务端防护 1 Docker安全优化思路 Docker容器的安全性&#xff0c;很大程度上依赖于Linux系统自身 评估Docker的安全性时&#xff0c;主要考虑以下几个方面&#xf…

两步解决yum无法安装软件问题:Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

报错信息&#xff1a; [rootiZwz946ibli8ikuyqgtc58Z ~]# yum install rh-redis5-redis Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org?archx86_64&release7&reposclo-rh …

[vue] jszip html-docx-js file-saver 图片,纯文本 ,打包压缩,下载跨域问题

npm install jszip file-saverimport JSZip from jszip; import FileSaver from file-saver;JSZip 创建JSZip实例&#xff1a; const zip new JSZip();创建文件&#xff1a;支持导出纯文本 zip.file("hello.txt", "Hello World\n");创建文件夹&#xf…

Leetcode3239. 最少翻转次数使二进制矩阵回文 I

Every day a Leetcode 题目来源&#xff1a;3239. 最少翻转次数使二进制矩阵回文 I 解法1&#xff1a;分别统计 先计算所有行变成回文最少需要翻转多少次。 也就是对于每一行 row&#xff0c;计算这一行变成回文最少需要翻转多少次。 也就是累加 row[j]!row[n−1−j] 的个…

Windows 11安装 MinGW-w64 教程

MinGW MinGW&#xff0c;全称“Minimalist GNU for Windows”&#xff0c;是一个提供在Windows操作系统上运行的GNU工具集的软件环境。它允许开发者使用GCC&#xff08;GNU Compiler Collection&#xff09;编译器来编译C和C程序&#xff0c;以及其他GNU工具&#xff0c;如GDB调…

【MySQL】字节跳动MySQL连环40问(网图)

本文首发于 ❄️慕雪的寒舍 字节MySQL连环40问&#xff0c;网图 虽然感觉这玩意和字节跳动没关系&#xff0c;但是管他的&#xff1f;直接开始回答&#xff01; 1.MySQL中有哪几种锁&#xff1f; 会的不全&#xff0c;所以查的GPT MySQL中有多种类型的锁&#xff0c;主要包括以…

【Python篇】Python 类和对象:详细讲解(中篇)

文章目录 Python 类和对象&#xff1a;详细讲解前言9. 方法重写&#xff08;Method Overriding&#xff09;9.1 为什么需要方法重写&#xff1f;9.2 方法重写的基本示例9.3 代码详解 10. 多继承&#xff08;Multiple Inheritance&#xff09;10.1 多继承的概念10.2 多继承的示例…

Springboot 大学生心理健康教育平台---附源码92334

目录 1 绪论 1.1 研究背景 1.2研究现状 1.3论文结构与章节安排 2 大学生心理健康教育平台分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程分析 2.5本章小结 3 大学生心理健康教育平台总体设计 3.1 系统功能模块设计 3.2 数据库设计 3.4本章小…

chapter09-OOP高级部分——(接口)——day13

目录 403-接口快速入门 404-接口基本介绍 405-接口应用场景 406-接口使用细节1 407-接口使用细节2​编辑 408-接口课堂练习 409-接口VS继承 410-接口多态特性 411-接口多态传递 412-接口课堂练习 403-接口快速入门 404-接口基本介绍 405-接口应用场景 406-接口使用细节…

unity shader 鼠标传入世界坐标到shader的练习

练习贴 c#代码 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine;public class TestInputPosShader : MonoBehaviour {public Material material;const int arrayCount 2000;Vector4[] list new Vector4[a…

JavaWeb笔记整理10——JWT令牌、Filter、Interceptor

目录 1.简介 2.生成和校验 3.登录-生成令牌 4.过滤器Filter 快速入门 Filter执行流程 Filter拦截路径 过滤器链 登录校验Filter 流程 代码 5.拦截器Interceptor 快速入门 Interceptor拦截路径 执行流程 代码 继笔记04-session cookie 1.简介 2.生成和校验 /*…