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の中身を確認すると起動した記憶のあるコンテナのようで何らかの理由で消すのに失敗し管理外になってしまったようです。