はじめに
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” はどのコンテナにも紐付いていないボリュームを抽出する事が可能。