服务器的空间隔一段时间就会提示空间不足,于是找来找去,每次发现docker的日志文件都会占用比较大的空间,这不,今天网关那边又提示服务器磁盘空间告警,于是需要考虑如何有效的删除掉容器日志,减少空间占用。
问题排查
通过以下命令逐级排查占用空间比较大的目录,最终找到罪魁祸首。
du -h -x --max-depth=1 /
找到感觉占用比较异常的,就依次找下一级,比如:
du -h -x --max-depth=1 /home
du -h -x --max-depth=1 /home/docker
通过上述过程逐一排查,最终发现docker容器中的一些json.log 以及一些 out.log文件占用比较大,并且这些都是日志文件,并不影响容器正常运行。
清理脚本
既然前面已经明确了问题所在,那么就需要添加一个脚本,实现定期清理那些日志文件,避免长期占用磁盘空间,清理日志文件脚本如下:
#!/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.sh
,则执行如下命令给予可执行权限并执行
chmod +x clean.sh
./clean.sh
当然最好的处理方式是限制日志文件的大小,但是相对比较麻烦,后面再说了,先解决燃眉之急。
评论区