【メモ】Dockerを使っていとだんだんディスク容量が減ってくる問題の対処方法

# 記事の概要
単なる個人メモですが、個人的な開発兼本番環境で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したなぁ・・・

なんとなく思い当たりもあるので、おそらく間違いないでしょう。では、原因を潰しに行きます。

## 対処
こちらのページを参考にいくつかコマンドを実行しました。

https://qiita.com/kaiou_fight/items/d68436f374fcd3531cf6

https://sumito.jp/2019/06/28/docker-storage-full/

まずはこちらのコマンドを実行。結果はあまり容量回復にはなりませんでした。

### 削除コマンド

```
# すべてのコンテナを抹消
$ 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するとめんどくさいことが起こった時の対処が大変ですよ（笑
ちなみにいつ落ちても問題ない個人のシステムだからこんなことをできますが、そうでないシステムだったらやるのもそれなりにリスクがあります。なので事前調査のための材料という意味では、この記事もどなたかのお役に立てるかもしれませんね。


## おまけ
なお、フォルダ毎の容量はこちらの記事を参考にこちらのコマンドで調査しました。

https://zenn.dev/big_tanukiudon/articles/7c6b4299cae979

### コマンド
```
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
  :
```