Docker 容器日志查看和清理

news2024/9/30 13:28:23

🚀 作者主页: 有来技术
🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot
🌺 仓库主页: Gitee 💫 Github 💫 GitCode
💖 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请纠正!

目录

  • Docker 容器日志查看
  • Docker 容器日志清理
    • 单容器日志清理
    • 所有容器日志清理
    • 定时清理
  • 设置 Docker 容器日志大小限制
    • 全局设置
    • 单容器设置
  • 常用命令

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)。

上图可以看到容器ID为 5c51773bc35d19d69c8f07895232295e4abeb0c9f25e25ca3884fec6ebd6f3fa 的数据较大。

cd /var/lib/docker/containers/5c51773bc35d19d69c8f07895232295e4abeb0c9f25e25ca3884fec6ebd6f3fa
# 查看容器数据目录下的文件大小
du -sh * | sort -rh

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

复制下面内容至 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)

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

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

相关文章

山寨Stream API

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 一个需求 List<Per…

LeetCode [简单](非递归)二叉树的中序遍历

遍历左孩子&#xff0c;将他们放进栈中&#xff0c;左边走到尽头&#xff0c;出栈&#xff0c;root变为栈顶元素&#xff0c;存值&#xff0c;向右边走一个 再次遍历左孩子&#xff0c;将他们放入栈中&#xff0c;如果没有左孩子了&#xff0c;就出栈&#xff0c;root变为栈顶…

Rocky Linux 9.3 为 PowerPC 64 位带回云和容器镜像

导读RHEL 克隆版 Rocky Linux 9.3 今天发布了&#xff0c;作为红帽企业 Linux 发行版 CentOS Stream 和 Red Hat Enterprise Linux 的免费替代版本&#xff0c;现在可供下载。 Rocky Linux 9.3 是在 Rocky Linux 9.2 发布 6 个月之后发布的&#xff0c;它带回了 PowerPC 64 位…

Mysql锁实战详细分析

1.mysql回表查询 在这里提起主要是用于说明mysql数据和索引的结构&#xff0c;有助于理解后续加锁过程中的一些问题。 mysql索引结构和表数据结构是相互独立的&#xff0c;根据索引查询&#xff0c;只能找到索引列和主键聚簇索引。如果select语句中不包含索引列&#xff0c;m…

SpringBoot自动配置注入Bean工具autoconfigure

依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency> yml配置 student:red: com.ma.config.MinIOConfigProperties spring.factories org.springframework.…

Python提取PDF表格(基于AUTOSAR_SWS_CANDriver.pdf)

个人学习笔记&#xff0c;仅供参考。 需求&#xff1a;提取AUTOSAR SWS中所有的API接口信息&#xff0c;用于生成C代码。 此处以AUTOSAR_SWS_CANDriver.pdf为例&#xff0c;若需要提取多个SWS文件&#xff0c;遍历各个文件即可。 1.Python包 pdfplumber是一款完全用python开…

Mysql解决随机选取问题

常规的随机选取效率差的原因&#xff1a; 两种解决方法&#xff1a; 总结&#xff1a;

VUE语法--img图片不显示/img的src动态赋值图片显示

1、问题概述 常见情景1&#xff1a;在VUE中使用img显示图片的时候&#xff0c;通过传参的方式传入图片的路径和名称&#xff0c;VUE不加载本地资源而是通过http://localhost:8080/...的地址去加载网络资源&#xff0c;从而出现了图片无法显示的情况。 常见情景2&#xff1a;针…

C#使用WebSocket进行链接

C#使用WebSocket进行网络链接&#xff0c;和服务端搭建一个长连接进行通信。 有两种方式&#xff1a;串口方式&#xff08;SerialPort&#xff09;和网口方式&#xff08;Socket 包括&#xff1a;TcpClient和UdpClient&#xff09; 准备&#xff1a; 1.C#使用WebSocket的一种…

【vue_3】关于超链接的问题

1、需求2、修改前的代码3、修改之后&#xff08;1&#xff09;第一次&#xff08;2&#xff09;第二次&#xff08;3&#xff09;第三次&#xff08;4&#xff09;第四次&#xff08;5&#xff09;第五次 1、需求 需求&#xff1a;要给没有超链接的列表添加软超链接 2、修改前…

4.Spring源码解析-loadBeanDefinitions(XmlBeanDefinitionReader)

第一个点进去 发现是空 肯定走的第二个逻辑了 这里在这里已经给属性设置了值&#xff0c;所以肯定不是空能拿到。 1.ClassPathXmlApplicationContext 总结&#xff1a;该loadBeanDefinitions是XmlBeanDefinitionReader设置xml文件在哪。

4D雷达目标检测跟踪算法设计

1.算法流程 4D雷达点云跟踪处理沿用3D毫米波雷达的处理流程&#xff0c;如下图&#xff1a; 从接收到点云开始&#xff0c;先对点云做标定、坐标转换、噪点剔除、动静分离&#xff0c;再分别对动态目标和静态目标做聚类&#xff0c;然后根据聚类结果做目标的特征分析和检测等&a…

Linux - 动静态库(上篇)

Linux 当中的 内存管理模块 不管是操作系统对于进程之间的管理&#xff0c;还是 对于文件的访问和修改等等的操作&#xff0c;都是要把数据加载到内存当中的&#xff0c;所以&#xff0c;所有的工作都离不开 内存管理模块。 内存的本质其实是对数据的一种临时存储&#xff0c…

Linux shell for jar test

Linux shell 脚本&#xff0c;循环解析命令行传入的所有参数&#xff0c;并按照不同的传参实现对不同的 java jar文件 进行测试执行。 [rootlocalhost demo]# cat connTest.sh #!/bin/bash# Linux shell for qftool java jar test# modes DEFAULT_MODE2jarfiles[1]common-1.0…

Redis 两种持久化方式 AOF 和 RDB

目录 一、Redis 的持久化 二、Redis 的持久化方式 RDB RDB 介绍 RDB 的触发方式&#xff1a;. 三、RDB的文件生成策略 四、Save 和 Bgsave 命令的区别 六、RDB 最佳配置 七、触发机制-不容忽略方式 AOF 一、AOF介绍 二、RDB所存在的问题 三、AOF 三种策略 四、AOF…

linux zsh终端美化

目前的centos系统默认的shell还是bash&#xff0c;但是zsh被称为终极shell&#xff0c;国外有个程序员开发出了一个能够让你快速上手的zsh项目&#xff0c;叫做「oh my zsh」&#xff0c;Github 网址是&#xff1a;https://github.com/robbyrussell/oh-my-zsh 有了这玩意zsh用起…

vue3中的动态component组件

is属性来指定要渲染的组件(填写组件名&#xff09; 多个子组件通过component标签挂载在同一个父组件中&#xff0c; 可以修改is属性进行动态切换组件。 可以搭配<keep-alive></keep-alive>使用。 父组件代码&#xff1a; <template><div style"fon…

Linux系统下查询指定网卡的型号及用途

接到应用侧的特殊要求&#xff0c;需要查询服务器上特定网口的物理型号及配置用途&#xff0c;发现没有一条现成指令可以完成此事。经测试&#xff0c;可按以下步骤执行3条命令来组合完成。 一、使用lspci命令来查询指定网卡的型号 按照以下步骤进行操作&#xff1a; 打开终…

基于振弦式轴力计和采集仪的安全监测解决方案

基于振弦式轴力计和采集仪的安全监测解决方案 振弦式轴力计是一种测量结构物轴向力的设备&#xff0c;通过测量结构物上的振弦振幅变化&#xff0c;可以确定结构物轴向力的大小。采集仪是一种用于采集和存储传感器数据的设备&#xff0c;通常与振弦式轴力计一起使用&#xff0c…

【无标题】【教3妹学编程-算法题】设计前中后队列

3妹&#xff1a;好冷啊&#xff0c; 冻得瑟瑟发抖啦 2哥 : 又一波寒潮来袭&#xff0c; 外面风吹的呼呼的。 3妹&#xff1a;今天还有雨&#xff0c;2哥上班记得带伞。 2哥 : 好的 3妹&#xff1a;哼&#xff0c;不喜欢冬天&#xff0c;也不喜欢下雨天&#xff0c;要是我会咒语…