清理Docker部署的log日志文件
docker部署的应用,清理log日志
·
清理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日志后
更多推荐
已为社区贡献2条内容
所有评论(0)