无意中发现docker下的overlay2文件件占用空间100多G,想查看一下到底是哪个容器占这么大空间
[root@node1 docker]# du -sh *
20K builder
72K buildkit
3.4G containers
72M image
200K network
126G overlay2
20K plugins
4.0K runtimes
4.0K swarm
4.0K tmp
4.0K trust
40K volumes
[root@node1 overlay2]# du -s *|sort -nr|head -n 5
87018928 4e2143ab98919d2bf82f88d065ff3e2901edad240d854cd019a0989c3cfc4052
5065168 547ed5b5112c68b87a26fa4f9eeeb6d87587b10d19a30912ba8a81add6933211
855484 0a30c438a978be6661298953af0722de45db0603d5e73417c729638ef2f83cce
798552 2a1a1bfe30a023e691cf79fd316dacea8acaa1479494a0c5ed1dd9880c6ab0e0
549908 cad7555713753f924a1708d86e061a12d661eb149dc5b5baad258fbff36eabaa
[root@node1 overlay2]# du -sh 4e2143ab98919d2bf82f88d065ff3e2901edad240d854cd019a0989c3cfc4052
83G 4e2143ab98919d2bf82f88d065ff3e2901edad240d854cd019a0989c3cfc4052
[root@iZ2zef1e034gg98bajpqw5Z overlay2]#
通过上面的命令可以看到,光是4e2143ab98919d2bf82f88d065ff3e2901edad240d854cd019a0989c3cfc4052这个目录就占了83G
如果我们直接使用docker ps|grep 文件夹名这种方式是找不到容器的,因为他是存储的名字,并非容器名,我们要使用以下命令
[root@node1 overlay2]# docker ps -q | xargs docker inspect --format ' {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep 4e2143ab98919d2bf82f88d065ff3e2901edad240d854cd019a0989c3cfc4052
b1001ebb40aa90639366490577c7c1ee26126565c66fb017d7a426b490dd225b, /k8s_api-gateway_api-gateway-5898577c84-nt64z_test-open-gateway_cba4a511-3f73-47b7-adeb-577657d52729_0, /var/lib/docker/overlay2/4e2143ab98919d2bf82f88d065ff3e2901edad240d854cd019a0989c3cfc4052/work
这样就找到了容器id和名字,经最后排查发现是程序日志写到了非持久化存储目录导致