/var/lib/docker/overlay2のストレージ肥大化対応
ディスク空き容量が少しずつ減少している
https://gyazo.com/f52cd35738fd342124dbc6d84739871e
日次でdocker imageを削除するバッチを動かしているので、他にも原因があるはず
調査
code:sh
df -h
cd /
# かなり時間かかる
sudo du . -d 1 | sort -nk1
cd var
sudo du . -d 1 | sort -nk1
cd lib
sudo du . -d 1 | sort -nk1
cd docker
sudo du . -d 1 | sort -nk1
cd overlay2
ls
/var/lib/docker/overlay2配下に何かが残っている
類似の記事を探したらドンピシャなのがあった
ボリュームが消されずに残っているものと思われる
code:sh
$ docker volume ls | head
DRIVER VOLUME NAME
local 0c2e393639f4c2be6e9cdf41bc75008644978a87acb56af1534e814fc2da3122
local 0d410d2f7a47ee3e00b0ce848604527b7cf1a215370aa408d1db335e3da18268
local 0dbd7f1c68565bee614cd86717394c415f2c78ee5b75867dcd0d24f52af14592
local 0dfd5f89a72e305ccb46bc00b7427d8cc1817225b713b2ae8a6b0cde3738b255
local 0e72d46594d2e53cdcc66dfed2174e30cae5874073ba121dc0a1d21ac5288720
local 0ecd5ca9b53bb33e0c5cb7c7d3f62fdd64b9d8cc2eeb767443736940a5a1ce45
local 1a2f47284af456dd75fa2a90f399bf2d81c358c0d88d213ebf33ffffe1b3e978
local 1b7ecdf85f28d61c94a14233bef682cd8a79155d4603414c66ec09fd42e6c9ac
local 1ca94ff47bc503101e8d1e6af2bf243c54c453884cbf6521036b9dcc5a69dfdd
$ docker volume ls | wc -l
228
ビンゴ
volumeを削除する
code:sh
docker system prune --volumes -f
Total reclaimed space: 5.219GB
たった5GB?
code:sh
/var/lib/docker# du . -d 1 | sort -nk1 | tail -n 2
12920904 ./overlay2
18773520 .
まだ残ってる
code:sh
/var/lib/docker# docker volume ls
DRIVER VOLUME NAME
local 092370459fda5694c607ebf556e80ce013d877e29acb85f24e0f958a775ad423
local d916ff5b1b7badd14e9d78925e8ad3a06050e75713d0e089f3c89f7fbbced522
ボリュームは消えた
code:sh
/var/lib/docker/overlay2# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 18 6 11.17GB 10.73GB (96%)
Containers 6 6 0B 0B
Local Volumes 2 2 0B 0B
Build Cache 0 0 0B 0B
差分がある
ひとまず暫定対応ではあるけれど volume を削除するcronの追加までとする
volume削除のcron
code:/etc/cron.d/websh
# Remove unused docker volume
0 4 * * * www-data docker volume prune -f >> /var/log/websh/remove_docker_volumes.log 2>&1
53.6GBまで回復したけれど、まだ無駄にどこかに不要なデータが残ってるはず
別途調査する
余談
docker system prune --allしたらシェル芸botのイメージも消えちゃってアプリが数分動かなくなった
シェル芸botのイメージは常駐するものではない
アプリ側でイメージをdocker runしてるだけ
なのでdocker system prune -allで消える対象に含まれるようだった
つら