docker用久了以后有较大概率遇到这个问题,表现就是/var/lib/docker/overlay2下占用90%以上的硬盘空间(下图是别的帖子的,我就懒得自己截图了,就做个问题示意图而已)。
一、检查是否有多余的容器和镜像
可以通过命令检查:
// 查看所有容器
docker ps -a
//查看所有镜像
docker images
//删除容器
docker rm 容器id或容器名称
//删除镜像
docker rmi 镜像id
//查看docker内部的硬盘使用情况
docker system df
或者一步到位
//清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
docker system prune
//清理更干净、彻底,可以将没有容器使用的Docker镜像都删掉。
docker system prune -a
二、清除容器日志
运行时间较长(1年以上)容器日志文件会堆积较多,占用大量硬盘,网上有的帖子就是这种情况,主要清除/var/lib/docker下的日志文件,清除脚本如下:
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log) #containers下没有的话可以往上一级
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
可以建立一个.sh文件手动执行或者设定定时任务来执行。
三、检查容器是否存储空间泄露
这个排查的过程,我的情况运气成分很大,一开始,我把日志都清除了,但清出来的空间很少,1t也就清出了10g左右。后来在检查docker的时候发现一个容器正常运行,但业务上没用到,当时是想着多腾点空间,然后请别的大佬看看docker什么地方占用硬盘。
奇迹出现了:我把这个容器连同镜像一起删除后,发现硬盘瞬间多了900多G(原来1t空间只剩10几g)。前面试过清除多余/非正常运行容器和镜像,清除docker日志,都没什么明显作用。
于是我猜想,是这个容器代码有问题,造成了硬盘空间泄露。
版权归原作者 可DRAK鸦|・ω・`) 所有, 如有侵权,请联系我们删除。