/var/lib/docker/が肥大化していたけどdocker system prune --volumesで解決しなかったので調べてみた

Linuxサーバーのディスク使用率が100%近くなっていたので調査したところ`/var/lib/docker/`が肥大化しているようでした。しかし`docker system prune --volumes`コマンドで掃除をしてもほとんど解消しなかったので、原因の調査と解決までの過程を記載しました。

# 今回有効だった対応


- ① `du -sh  /var/lib/docker/containers/*`で肥大化しているディレクトリを調べる

```
$ du -sh  /var/lib/docker/containers/*
1.3M    /var/lib/docker/containers/40efeb319b5a367e402df8d63db0206966f84173ff00e7d5c890b1a9b5451e
356K    /var/lib/docker/containers/b6b48fab692c35b16fd06d34ace336abf14fb6eaea94781e05cf174cdab80b13
58G     /var/lib/docker/containers/b8c18b714ee78390e33b537716faa6fdedec7ed8bc92a1f394133dc98c54c3e2
```

- ② 肥大化しているディレクトリ`/var/lib/docker/containers/<コンテナID>`からコンテナIDを取得して`docker rm -f <コンテナID>`で削除


# 原因の調査と解決までの過程： /var/lib/docker/が肥大化していました
Linuxサーバーのディスク使用率が100%近くなっていたので調査したところ　`/var/lib/docker/`が肥大化していました。

```
$ du -sh /var/lib/docker/ | sort -nr
101G    /var/lib/docker/
```

ということで`docker system df`で調査してみたのですが、結果が`du`と一致しない。

```
$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          7         7         3.613GB   481.7MB (13%)
Containers      0         0         0B        0B
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B
```

ここでImagesやLocal Volumes等が容量を圧迫しているだけであれば`docker system prune --volumes`などでゴッソリ掃除してあげて解消なのですが、今回は実行してみても効果がありませんでした。
もう少し細かく見ると`/var/lib/docker/containers`と`/var/lib/docker/overlay2`がデカいみたいです。

```
$ du -sh  /var/lib/docker/containers
58G     /var/lib/docker/containers
$ du -sh  /var/lib/docker/overlay2
43G     /var/lib/docker/overlay2
```

さらに見ていくと

```
$ du -sh  /var/lib/docker/containers/*
100K    /var/lib/docker/containers/017f55b261eea1f75a5eef556551a3bade2985c48a9b1cdc313906c39d6e2c17
52K     /var/lib/docker/containers/106c6af72e8346c852fb8ada421d96f9f777b71b27fcc985af3ec5ab8b401720
1.3M    /var/lib/docker/containers/40efeb319b8a367e502df8d63db0206966f84173ff00e7d5c890b1a9b5451ec2
9.4M    /var/lib/docker/containers/56c3523234e164e2525aca3fa10e9986d310ae1220048424d0146dd668b168ea
32K     /var/lib/docker/containers/5cee423ba16ab3c7bfa052364aa337d75f7a52b04e587141e381545f86c0bbce
28K     /var/lib/docker/containers/70a4cef3ff4493ced85134569a6a7d7ee57133392226beebe1b00645759de9d3
52K     /var/lib/docker/containers/b1437ac4dbae4e850477155f87024bc2c379977bab51baeea2a2b3a13f07e05e
356K    /var/lib/docker/containers/b6b48fab692c30b16fd05d34ace336abf14fb6eaea94781e05cf174cdab80b13
58G     /var/lib/docker/containers/b8c18b714ee78390e33b537716faa6fdedec7ed8bc92a1f394133dc98c54c3e2
32K     /var/lib/docker/containers/c8857fdd8aa67f923592ba768894cf8745fa7774822531b755d80b32a5929317
55M     /var/lib/docker/containers/d29ccdba0c777f53d95fd8c1f2e0aea9db94642247bfebecd38331f9e8db8361
84K     /var/lib/docker/containers/de10b21f2fc95e567857e9b817473f2bad700472ca371fd4951e4162673e38c3
416K    /var/lib/docker/containers/ea7da694d5d60137bd05d55c01524b5a407c1d8743a79f691b70537537ebf45e
240K    /var/lib/docker/containers/f411b88aa42bd8a95977f91b4e50b9f23fc837a78b233d2b2a8f396015baa9f1
```

しかし`docker ps -a`では何も出てきません。`docker system df`でも何も出てこなかったので、おかしな状況です。
どちらにせよコンテナが残ってしまっている状況に見えるので、ディレクトリ名からID指定して58Gあるコンテナを削除してみます。

```
# -fなしでは削除できない
$ docker rm b8c18b714ee78390e33b537716faa6fdedec7ed8bc92a1f394133dc98c54c3e2
Error response from daemon: You cannot remove a running container b8c18b714ee78390e33b537716faa6fdedec7ed8bc92a1f394133dc98c54c3e2. Stop the container before attempting removal or force remove
# -fつけて削除
$ docker rm -f b8c18b714ee78390e33b537716faa6fdedec7ed8bc92a1f394133dc98c54c3e2
b8c18b714ee78390e33b537716faa6fdedec7ed8bc92a1f394133dc98c54c3e2
```

再度容量を確認するとcontainers・overlay2ともにきちんと消えていました。

```
$ du -sh  /var/lib/docker/containers
67M     /var/lib/docker/containers
$ du -sh  /var/lib/docker/overlay2
8.7G    /var/lib/docker/overlay2
```

他のコンテナに対しても実行してみましたが消せたものと`No such container`になってしまうものがありました。消せなかったコンテナも`/var/lib/docker/containers/********-json.log`からlogの中身を確認すると起動した記憶のあるコンテナのようで何らかの理由で消すのに失敗し管理外になってしまったようです。