清理Docker部署的log日志文件

清理Docker部署的log日志文件

  • 问题现象
  • 排查
  • 解决方案
    • 原理及注意事项
    • 编写清理日志脚本clean_docker_log.sh文件
    • 执行clean_docker_log.sh文件清理日志

问题现象

当使用docker部署应用后,使用了一段时间后,发现服务器的磁盘空间一直在消耗。甚至达到了97%的磁盘使用率。那么问题来了,是通过加钱增加磁盘控件呢?还是通过“瘦身”的方式实现呢?下面就以清理docker的log日志来实现“瘦身”。

排查

docker的log日志文件一般存放在/var/lib/docker/containers文件夹中。

cd /var/lib/docker/containers

进入到该文件夹后,通过du -sh .命令可以查看到当前文件夹下的文件的大小。可以看到有好几个文件都是几个G的级别。
在这里插入图片描述

解决方案

原理及注意事项

一般是.log文件比较大,可以清理,清理Docker容器日志(治标)如果docker容器正在运行,那么使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。原因是在Linux或者Unix系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是cat /dev/null > *-json.log,当然你也可以通过rm -rf删除后重启docker。

# 进入容器目录
cd /var/lib/docker/containers
# 查看哪个容器占用大
du -sh .
# 也可以具体进入某个容器
cd /var/lib/docker/containers/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05
# 查看文件大小
ls -l --block-size=m
# 清理日志
cat /dev/null > /var/lib/docker/containers/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05/a40b469c66170a20baef5d650e6584de71d74fd1f33351955a1ec128de73de05-json.log

编写清理日志脚本clean_docker_log.sh文件

#!/bin/sh 
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 ========"

执行clean_docker_log.sh文件清理日志

# 授权 
chmod +x clean_docker_log.sh
# 执行 
./clean_docker_log.sh

在这里插入图片描述
清理log日志前
在这里插入图片描述
清理log日志后
在这里插入图片描述文章来源地址https://uudwc.com/A/4Eb3W

原文地址:https://blog.csdn.net/weixin_38657051/article/details/128292304

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年06月28日 12:58
Python搭建PySpark执行环境入口时出现RuntimeError: Java gateway process exited before sending its port number解决办法
下一篇 2023年06月28日 12:58