記事の概要
単なる個人メモですが、個人的な開発兼本番環境でdockerを使っていて、気持ちよく動いていたのに突然ディスク容量が大きく減っていることに気がついたため、今後のために原因と、調査方法、対処方法をまとめた記事になります。
環境
awsエンジニアとはいえ、全部が全部aws環境でやっているわけではなく、古いNUCなどを使ってお家サーバを動かしていたりします。今回はその子の予兆をNew RelicのInfrastructureメトリクスで察知したためその対応になります。
[NUC]----[インターネット]
[NAS]---+
構成上NASのディレクトリをマウントしているとはいえ、内部ディスクがパンパンになるパターンはある訳で、今回はそんなお話しです。ちなみにこの子の上でdockerを動かしていて、buildもここでしています。
定期的にbuildするとイメージをdocker.ioからダウンロードしてきたり、build imageのキャッシュが溜まったりするのですが、今回悪さをしたのはそのキャッシュになります。
調査
安定のこちらのコマンドを使って、調査しました。そしてコマンド結果も併せて載せておきます。
$ sudo df -h
tmpfs 761M 3.2M 758M 1% /run
/dev/sda3 58G 50G 5.1G 91% / <-ここ
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sda2 512M 6.1M 506M 2% /boot/efi
192.168.xxx.xxx:/xxx 4.8T 2.4T 2.4T 51% /mnt/containter
tmpfs 761M 92K 761M 1% /run/user/115
tmpfs 7.5G 12K 7.5G 1% /var/lib/kubelet/pods/d6d9f34e-8fea-499e-969b-42804593c0da/volumes/kubernetes.io~projected/kube-api-access-94kql
tmpfs 7.5G 12K 7.5G 1% /var/lib/kubelet/pods/8267faa4-21c2-4211-890b-ecf7c7bcad18/volumes/kubernetes.io~projected/kube-api-access-nb48n
tmpfs 7.5G 12K 7.5G 1% /var/lib/kubelet/pods/1ec87af3-9238-475e-b067-31d104d97008/volumes/kubernetes.io~projected/kube-api-access-xfh5q
tmpfs 170M 12K 170M 1% /var/lib/kubelet/pods/d25fe581-89fb-4248-9d4f-a3d64f653855/volumes/kubernetes.io~projected/kube-api-access-24rf7
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/459b5d86a596ea52db53bfeb2cb9f1a2d11261a17663113193868057c0d1d431/shm
tmpfs 7.5G 12K 7.5G 1% /var/lib/kubelet/pods/7e4d011a-9363-48c1-901f-12b7bf3bf64e/volumes/kubernetes.io~projected/kube-api-access-clq88
tmpfs 7.5G 12K 7.5G 1% /var/lib/kubelet/pods/0570b682-d1e6-490d-8a54-06debcc07beb/volumes/kubernetes.io~projected/kube-api-access-l9ndk
tmpfs 7.5G 12K 7.5G 1% /var/lib/kubelet/pods/fa5c4762-3bbd-4d78-87aa-86e15dffafb5/volumes/kubernetes.io~projected/kube-api-access-hbfqj
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/459b5d86a596ea52db53bfeb2cb9f1a2d11261a17663113193868057c0d1d431/rootfs
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/a2ce7d66c063abdf54bda2ad48fe09e17c37c73d561a480302613e01f0c5b36c/shm
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/8a9883d47d4aa44e62178b390bfabe3d19b78d9c6093e5d6262a61552046cf67/shm
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/8a9883d47d4aa44e62178b390bfabe3d19b78d9c6093e5d6262a61552046cf67/rootfs
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/fd6c2c62ea004e9dcb3a6f08d4e164e07d8c59fbae20f9c2985401bc27e6fdd8/shm
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/a2ce7d66c063abdf54bda2ad48fe09e17c37c73d561a480302613e01f0c5b36c/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/fd6c2c62ea004e9dcb3a6f08d4e164e07d8c59fbae20f9c2985401bc27e6fdd8/rootfs
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/eebb739176353640e4b2844ff66ae2b1a4683e7e37e085fef6e5df4433b6b3be/shm
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/b4aabd544907bee52a74cb36900c7e2dde495b3faec2bc65a9eb03213f085adb/rootfs
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/c751d701a0b969b5e25a987631d1e3657cd772b269c4471c6ce38f7f08768b0c/shm
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/0edab6b2761bc388b1b08c0d793df62dd6734df7da06db45470a80376866f850/shm
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/c1c161423e9447d242ea95ca8cf52712feeb9b29f44c51ced2d3d73b8e29ffa9/shm
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/c751d701a0b969b5e25a987631d1e3657cd772b269c4471c6ce38f7f08768b0c/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/0edab6b2761bc388b1b08c0d793df62dd6734df7da06db45470a80376866f850/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/c1c161423e9447d242ea95ca8cf52712feeb9b29f44c51ced2d3d73b8e29ffa9/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/eebb739176353640e4b2844ff66ae2b1a4683e7e37e085fef6e5df4433b6b3be/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/326052a6b2e7ee0236f245fd9261d4e30876b6ad5ad564b8d2190cd50e668958/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/c9d53632b21fd1926f06b344b417a1a570fe4973e1cd933634e82db04f40f9a0/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/ff13b7fabfce0edf8c719bad59c5cfdd165a0f150fd42631d1c24a7873d10fff/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/a84e8ba84886775df264abdfbda0d34d16e346be046369298916a9a0e96094b6/rootfs
overlay 58G 50G 5.1G 91% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/bed3a308d6fe8c4c9a9077b0921742ba8a74376d45b74f4074ed4f1ec343c964/rootfs
:
はい、overrayが大量にいます(笑)
結論からいうと今回の悪者はこいつ。要はbuildする時のキャッシュとか落としてきたイメージとかそのあたりが残ってしまっている状態のように見受けられました(詳しく調べきれてませんが、そんな解釈です)。
もう一つ深掘りして調べてみました。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 17 5 9.264GB 5.754GB (62%)
Containers 5 4 51.88MB 33.46kB (0%)
Local Volumes 20 0 95.24kB 95.24kB (100%)
Build Cache 436 0 17.92GB 17.92GB
$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
xxxxx_xxxx latest 533183a7926e 10 hours ago 1.16GB
<none> <none> d808acb9aead 10 hours ago 1.16GB
<none> <none> faecf2d808df 10 hours ago 1.16GB
<none> <none> cdbbb7b81722 7 days ago 1.16GB
<none> <none> 7f5e7c7a664c 7 days ago 1.16GB
<none> <none> 3efbb119b378 7 days ago 1.16GB
<none> <none> 244f4ad087f6 7 days ago 1.16GB
<none> <none> 874b939c5e25 7 days ago 1.16GB
<none> <none> 81dba74c3683 7 days ago 1.16GB
<none> <none> 7daefe6b09a7 7 days ago 1.16GB
xxxxx_xxxx latest 7f587a235fc5 7 days ago 190MB
<none> <none> 5c54194dc1d8 7 days ago 1.16GB
<none> <none> 82734081c309 7 days ago 190MB
<none> <none> 3d158454ee01 7 days ago 1.16GB
<none> <none> 218704b7a404 2 months ago 1.17GB
xxxxx_xxxx latest 77a72eb21807 2 months ago 1.14GB
<none> <none> a489c09b8dc7 3 months ago 334MB
<none> <none> 9b9a4bb0c360 3 months ago 334MB
<none> <none> e41fa3addfc1 3 months ago 334MB
<none> <none> 37c13fdf74e4 3 months ago 334MB
<none> <none> b855b1f6cfcb 3 months ago 1.17GB
<none> <none> 166043336341 3 months ago 1.14GB
<none> <none> 58fd9f23e5fd 3 months ago 1.14GB
<none> <none> 5aad6e784d23 3 months ago 1.04GB
<none> <none> 9c548d1adb5f 3 months ago 1.17GB
<none> <none> d6a6cc80535a 3 months ago 1.17GB
<none> <none> cb638414a175 4 months ago 1.17GB
<none> <none> 508b1e43c89d 4 months ago 1.17GB
<none> <none> 78281fec3b75 4 months ago 1.17GB
<none> <none> a778dcd283f3 4 months ago 1.17GB
<none> <none> 7d17fd107c63 4 months ago 1.17GB
<none> <none> 44abe6714f2b 4 months ago 1.04GB
<none> <none> b2968cf25533 4 months ago 1.04GB
<none> <none> af74c9595c23 4 months ago 1.04GB
<none> <none> 7ceaeb2ca29b 4 months ago 1.04GB
<none> <none> ee4026d5c77c 4 months ago 1.17GB
<none> <none> 1866ddad9bff 4 months ago 1.17GB
<none> <none> 4e0159e995e6 4 months ago 1.17GB
<none> <none> 1c74b7be0ee9 4 months ago 1.09GB
<none> <none> 1a43171eb267 4 months ago 1.09GB
<none> <none> 183362d38e9b 4 months ago 1.09GB
<none> <none> 3810af535ca2 4 months ago 1.17GB
<none> <none> d4abdd5aa997 4 months ago 1.04GB
<none> <none> 994380f1e4fb 4 months ago 1.04GB
<none> <none> dea57b7cefa2 4 months ago 1.04GB
<none> <none> eb6f55c38fcd 4 months ago 1.04GB
<none> <none> cacc847e74b7 4 months ago 1.17GB
<none> <none> 70390a0dd3e8 4 months ago 1.17GB
<none> <none> 5cd8bd551650 4 months ago 1.17GB
xxxxx_xxxx latest 4d930c9f5afb 4 months ago 1.17GB
<none> <none> 3bb6528ee305 4 months ago 1.17GB
<none> <none> 4744b51c5d81 4 months ago 1.17GB
<none> <none> 94f1a0a4b1f0 4 months ago 1.17GB
<none> <none> bf5e107635df 4 months ago 1.17GB
<none> <none> 5697d589cda0 4 months ago 1.17GB
<none> <none> cf9436acec2e 4 months ago 1.17GB
<none> <none> 6e8e2aa76174 4 months ago 1.17GB
<none> <none> a07fca78f3e3 4 months ago 1.17GB
<none> <none> 487f4ece5443 4 months ago 1.17GB
kentik/ktranslate v2 dbb45cb5a18a 4 months ago 334MB
ktransrate-ktrans_nr latest 4442bd808247 4 months ago 334MB
<none> <none> a1e985916e6e 4 months ago 334MB
<none> <none> 650a3d32ac9a 4 months ago 674MB
<none> <none> c7d35b9ea4e1 4 months ago 669MB
<none> <none> 34c8aea7365f 4 months ago 669MB
<none> <none> f3cdbdf421bd 4 months ago 695MB
<none> <none> 44b668bdc087 4 months ago 695MB
<none> <none> 3f710b4ae43d 4 months ago 695MB
<none> <none> 5234d1ce48e1 4 months ago 695MB
<none> <none> 56b6fdac23a3 4 months ago 688MB
<none> <none> 302fb667deea 4 months ago 688MB
<none> <none> d1c36019ffb2 4 months ago 688MB
<none> <none> df19331afd63 4 months ago 688MB
<none> <none> 7274cb1d4665 4 months ago 688MB
<none> <none> 7dc2a7ec3639 4 months ago 688MB
<none> <none> cce7fe3714c9 4 months ago 688MB
<none> <none> 63fe34b6c729 4 months ago 685MB
<none> <none> 493495965cfe 5 months ago 685MB
xxxx latest 8bb5bbb92f70 5 months ago 470MB
<none> <none> 53e50769492a 5 months ago 1.01GB
xxxxx_xxxx latest 3cd48f9a20e9 5 months ago 1.02GB
xxxxx_xxxx latest a4a3fc8a2cf8 6 months ago 1.22GB
<none> <none> 899ff0f7ee87 6 months ago 1.22GB
<none> <none> fe44a77a4877 6 months ago 1.22GB
<none> <none> 598b7fa38082 6 months ago 1.22GB
<none> <none> 75f51ccabf9c 6 months ago 1.22GB
<none> <none> d9f5d5ac0bb5 6 months ago 1.22GB
<none> <none> 18eff2369148 6 months ago 1.22GB
<none> <none> 958574b11990 6 months ago 1.22GB
<none> <none> dfd37360c307 6 months ago 1.22GB
<none> <none> e383490425f9 6 months ago 1.13GB
<none> <none> 9fb761161671 6 months ago 1.13GB
<none> <none> 228752964bbd 6 months ago 1.13GB
<none> <none> 185a8a193842 6 months ago 1.13GB
<none> <none> e01f588098ae 6 months ago 1.13GB
<none> <none> b547b22e5313 6 months ago 1.13GB
docker-build-python3 latest 446787f56a95 8 months ago 1.04GB
xxxxxx-python3 latest 8cf8856c2271 8 months ago 1.04GB
docker-python-test-python3 latest d866912a0431 8 months ago 1.29GB
<none> <none> 8928b8fc0190 8 months ago 1.29GB
xxxxxx/xxxxxx 1.2 a114c69d867d 8 months ago 934MB
registry latest 65f3b3441f04 8 months ago 24MB
どうやら見立てどおり、ゴミがいっぱい溜まっているようです。容量が5GBくらい減ったと思っていたら、そういえば昨日buildしたなぁ・・・
なんとなく思い当たりもあるので、おそらく間違いないでしょう。では、原因を潰しに行きます。
対処
こちらのページを参考にいくつかコマンドを実行しました。
まずはこちらのコマンドを実行。結果はあまり容量回復にはなりませんでした。
削除コマンド
# すべてのコンテナを抹消
$ docker image prune
# 現在使用されていないコンテナの削除
$ docker container prune -f
確認コマンド
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 5 5 4.033GB 0B (0%)
Containers 5 4 51.88MB 33.46kB (0%)
Local Volumes 20 0 95.24kB 95.24kB (100%)
Build Cache 436 0 19.01GB 19.01GB
$ sudo df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 761M 3.2M 758M 1% /run
/dev/sda3 58G 50G 5.3G 91% / <-減ってない
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
よくよく調べてみるとvolumeも削除しないと容量が減らないとのこと。
続いてこちらのコマンドを投入
削除コマンド
$ docker system prune --volumes --all
確認コマンド
$ sudo df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 761M 3.2M 758M 1% /run
/dev/sda3 58G 24G 31G 44% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sda2 512M 6.1M 506M 2% /boot/efi
使用容量が減りました(ヤター!
総括
本番環境でbuildするとめんどくさいことが起こった時の対処が大変ですよ(笑
ちなみにいつ落ちても問題ない個人のシステムだからこんなことをできますが、そうでないシステムだったらやるのもそれなりにリスクがあります。なので事前調査のための材料という意味では、この記事もどなたかのお役に立てるかもしれませんね。
おまけ
なお、フォルダ毎の容量はこちらの記事を参考にこちらのコマンドで調査しました。
コマンド
du -shc /* | sort -h
結果
$ sudo du -ms /var/lib/docker/* | sort -nr
34088 /var/lib/docker/overlay2
123 /var/lib/docker/swarm
68 /var/lib/docker/image
30 /var/lib/docker/containers
10 /var/lib/docker/buildkit
:
$ sudo du -ms /var/lib/docker/overlay2/* | sort -nr
1280 /var/lib/docker/overlay2/ab7c6cc60e21b6bc497b5c358f08190d81c9d81eeff907fb26e0e2d583093882
1197 /var/lib/docker/overlay2/f4978673d990a5182142673650135062c31f9d952d756ffca36932cff96cea08
1158 /var/lib/docker/overlay2/c0d4aae25a93d148f316449bb923ec075516d1a89bba44e8e7ec9358087defb0
626 /var/lib/docker/overlay2/vsim3bcly5z4lmlfardm6zgi1
: