文章目录
  1. 1. docker日志问题导致磁盘空间不足

docker日志问题导致磁盘空间不足

昨天突然发现本厂开发环境各个docker实例都处于非健康状态,在宿主机上执行命令:

df -h

发现docker相关的文件占用空间是100%:

paste image

有点不正常,我看看docker相关的文件占用情况,是镜像占用的还是容器占用的,或者是Volumes占用的,执行:

docker system df

这里面显示一切正常,也并没有超过挂载盘的大小256G。

首先把多余的镜像和不用的docker都清理掉。

执行命令:

docker system prune -a

可以将没有容器使用Docker镜像和未开启的容器都删掉。

我看到占用超过226G空间的都来自 /mnt/docker/overlay2/* 这个目录,
进入到这个目录,并执行:

du -lbhs ./*

发现这里面也没有超过2个G的目录文件大小。

我潜意识里就觉得八成是日志导致的,所以我首先看看是不是我所有的docker输出的日志文件是否需要清理了,我到挂载目录里去看看,果然发现了很多docker容器的日志目录就占了1-2个G,我du -lbhs 了一下,发现所有容器挂载的日志目录加起来的容量才8G多点,不足以占用256个G的空间。
算了,先把这8个G的占用清了吧。

rm -rf ./*/logs/*

然后我再看看docker容器本身还有多少占用的空间情况:

docker ps --size

发现还有两个docker占用了3个多占的空间,但是又不知道具体是什么导致的,那我只能看看docker本身的硬盘占用情况了:

docker diff <container>
    

发现/tmp 目录下有好多文件:

paste image

还有指向/tmp/tomcat.*/* 相关的目录:

paste image

我觉得八成就是这些东西占用的,/tmp 临时文件按道理讲系统会自动删除的,不知道为什么没有删除,这个后面再找原因。
我就把所有docker容器里的/tmp目录下的文件全部删除,反正是临时文件。

docker exec <container> rm -rf /tmp/*

好,都删除了,再看一下硬盘空间,发现还是已使用100%。

怎么办,有点慌了,我看这个指向的还是overlay2目录,我尝试着在目录里找找问题。

我想,这个overlay2目录可能有挂载或者链接,它自身并不大,是挂载的目录占用大。

我们往上一级再看看哪个文件占用空间大:

cd ..
du -lbhs ./*

发现有几个contarins目录下的目录文件占用挻大的:

paste image

我就从最大的目录下手,占用空间7.4G的,是8972f…..这个目录,我进去看一眼:

paste image

我发现里面有个后缀为xxxx-json.log的这个文件占了198G,这个就是问题了,很兴奋,赶紧删除了:

rm -rf ./*/*.log

这个就把所有的contarner的控制台日志文件删除了。

我们再看看docker的空间占用情况:

paste image

这里已经很好了,只有镜像占用了1个多G。

我们再来看看宿主机的空间情况:

df -h

发现还是100%,见鬼了:

paste image

一般觉得见鬼了的时候,只有两种情况,一种是你操作错了别的东西,一种是缓存,我觉得是后者。

我觉得肯定是docker还没有读到真实的容器占用硬盘空间的数据,那我只能重启docker了:

systemctl daemon-reload 

systemctl restart docker

为了确认一切顺利,运行:

 docker info
 

ok,没有问题了,再执行 df -h
很好:

paste image

已经只占用挂载磁盘 /dev/vdbd1总大小的2%。

看来后面还是要写一个自动删除日志的脚本,来维持硬盘空间的大小。

参考文章1

参考文章2

参考文章3

参考文件章4

文章目录
  1. 1. docker日志问题导致磁盘空间不足