能看到这里说明可能遇到了和我一样的问题,对,服务器存储不够用了。
通过上一篇 查看docker的日志大小 里面可以看到容器的日志竟然达到G级别,而这只是我测试用的虚拟机里面,还不是服务器,真正的服务器里的docker日志最高的到了27G!df -h查看只剩下8G存储空间可用,所以必须尽快删除日志了。
困惑
说到删除,喀喀喀,不多说,直接rm了,结果df发现存储空间并没有空闲出来啊。原因是在Linux或者Unix系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
解决
正确的删除方法:cat /dev/null > *-json.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 ========"
# chmod +x clean_docker_log.sh
# ./clean_docker_log.sh
当然这种方式清理过后还是会再次慢慢增加起来,你想到什么了?没错,大不了价格周期任务就是了 cron!
这里仅提供一个思路,当然网上还有很多其他方式,比如修改docker配置、配置容器docker-compose等,对于我来说一个是不实用(只针对新容器)、一个是难度大(没安装compose),所以直接简单粗暴的解决掉再说吧。
评论区