dockerを長期的に使いDISKを圧迫した時の対処

はじめに

dockerを長期的に運用していると、気がついたらdiskがなくなってることがある。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        16G   14G  1.2G  93% /

気がつけば93%もう後がない状態。

対処

dockerの不要なボリュームを削除することで対処可能

まずは使われていないdiskを確認する。

# docker volume ls -f dangling=true
DRIVER              VOLUME NAME
local               0d0c5c35a033c3fbf35bc8eb3b1f9a9612ece1c622cf0ad357b6e20084350760
local               9aea772f64985c7a271f5d20c519b4a59ccd2219030f961c37a1cfb0130f2d35
local               55ccc89f56ebe15c4091cb4b196877ea08e9dd93ecb26fd17b941baf03458b58
local               93ef3cb97887f0d357332afbcebb5c096f7e8eaae4bcfd2285042e51d53771c7
local               529d774ed12a837ceb118b56ef16bd2ad9420973cd76f1a76575c21e9b0719ff
local               543b74740c96e9925d66546fd56b2e8eb3e2254706c0ae10e37dfd54c3719033
local               635117bef58efbcaff9d0b8aab47702d2ad271bb5fffd4e0ab8f700e3d5aa2f5
local               069661160a320af109bccf5099d1f4b7f5a2003911ba8d029075c45b145873d1
local               af62d09de828c78ed362278a8bda4120649dadb5e3d824e65c6309c0293d7d37
local               c8e396a769f4c4e8a0829f9b230fec92b282b9b36575218d25b89bf9891349d5
local               d190aecd81bc16520210af668c3ea0fec32a1b1a3d8554a058c5cef65f87de09
local               dcd49f633c6c0fbb7307788cc1521b6cc9c851fdd52aab9f0af7687ed3a1ab3e
local               e0b22e274022a38e0aedbd6db1b950c3084d1f463e5f1a47b79d5e38d61e5bcb
local               e051a42bc994b73f704863559f818289a4c38ec6f314b99be365e9a6484ac604
local               ebad853173f65bd381eb52f43493825a8e3e9c19bbaaa7dcfd6b03f39611cf4f
#

不要なdiskがぞろぞろ出てくる。

パイプで繋いでxargsで削除。

# docker volume ls -qf dangling=true | xargs docker volume rm
0d0c5c35a033c3fbf35bc8eb3b1f9a9612ece1c622cf0ad357b6e20084350760
9aea772f64985c7a271f5d20c519b4a59ccd2219030f961c37a1cfb0130f2d35
55ccc89f56ebe15c4091cb4b196877ea08e9dd93ecb26fd17b941baf03458b58
93ef3cb97887f0d357332afbcebb5c096f7e8eaae4bcfd2285042e51d53771c7
529d774ed12a837ceb118b56ef16bd2ad9420973cd76f1a76575c21e9b0719ff
543b74740c96e9925d66546fd56b2e8eb3e2254706c0ae10e37dfd54c3719033
635117bef58efbcaff9d0b8aab47702d2ad271bb5fffd4e0ab8f700e3d5aa2f5
069661160a320af109bccf5099d1f4b7f5a2003911ba8d029075c45b145873d1
af62d09de828c78ed362278a8bda4120649dadb5e3d824e65c6309c0293d7d37
c8e396a769f4c4e8a0829f9b230fec92b282b9b36575218d25b89bf9891349d5
d190aecd81bc16520210af668c3ea0fec32a1b1a3d8554a058c5cef65f87de09
dcd49f633c6c0fbb7307788cc1521b6cc9c851fdd52aab9f0af7687ed3a1ab3e
e0b22e274022a38e0aedbd6db1b950c3084d1f463e5f1a47b79d5e38d61e5bcb
e051a42bc994b73f704863559f818289a4c38ec6f314b99be365e9a6484ac604
ebad853173f65bd381eb52f43493825a8e3e9c19bbaaa7dcfd6b03f39611cf4f
#

93% -> 72%に削減できた

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        16G   11G  4.3G  72% /

コマンドの詳細

dockerの -f “dangling=true” はフィルタオプション。

“dangling=true” はどのコンテナにも紐付いていないボリュームを抽出する事が可能。