docker磁盘占用瞬间变大问题解决

切到容器文件系统目录

cd /var/lib/docker/overlay2/

查找磁盘占用量大的容器目录

du -sh * | grep G
1.2G	 95ea9025f6723e783be5691ca26fbd849e6747870c64cacd53db4b2c3c8e4646
61G	 b9249ef4c19bb13e6b8a0152d13c94e4958f6609b326ae66f949093419b5df1b

看一下里面都是什么文件

ls -lh b9249ef4c19bb13e6b8a0152d13c94e4958f6609b326ae66f949093419b5df1b
total 61.2G
-rw------- 1 root root  44M Nov 12 23:07 core.988
-rw------- 1 root root  44M Nov 12 23:07 core.991
-rw------- 1 root root  38M Nov 12 23:07 core.994
-rw------- 1 root root  44M Nov 12 23:07 core.997
……

大量的core Dump文件,说明应用有问题,但不知道因为什么,先复制一下最新的几个到备份目录,后续准备拿来分析

查找该目录被那个容器使用

docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}'| grep "b9249ef4c19bb13e6b8a0152d13c94e4958f6609b326ae66f949093419b5df1b"
50882, /k8s_fluent-bit_fluent-bit-bj4r5_kubesphere-logging-system_19be828e-d484-456f-b594-9bce78c3f235_1, /var/lib/docker/overlay2/b9249ef4c19bb13e6b8a0152d13c94e4958f6609b326ae66f949093419b5df1b/work

上方标红的那一段是容器名,这个容器是k8s向es发送日志用的,DaemonSet类型,不影响业务,可以操作

先停止容器

docker stop k8s_fluent-bit_fluent-bit-bj4r5_kubesphere-logging-system_19be828e-d484-456f-b594-9bce78c3f235_1

再删除容器

docker rm k8s_fluent-bit_fluent-bit-bj4r5_kubesphere-logging-system_19be828e-d484-456f-b594-9bce78c3f235_1

注意:一定要先停止,再删除,不要restart重启,因为重启不会释放磁盘空间

由于是DaemonSet控制器管理的容器,删除后应该会自动重建,检查一下

docker ps | grep fluent-bit
7515e36a77c2   4963c2c07dd7                                                
"/fluent-bit/bin/flu…"   10 seconds ago   Up 10 seconds           
k8s_fluent-bit_fluent-bit-bj4r5_kubesphere-logging-system_19be828e-d484-456f-b594-9bce78c3f235_2

能看到新的容器已经启动

此时再检查下磁盘占用

du -sh * | grep G
1.2G 	95ea9025f6723e783be5691ca26fbd849e6747870c64cacd53db4b2c3c8e4646
# 能看到61G的那个目录已经删除了

posted @ 2023-08-10 18:07  山河剑心  阅读(83)  评论(0编辑  收藏  举报