清理Docker部署的log日志文件

问题现象

当使用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日志后
在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值