不要なDockerコンテナとイメージをまとめて掃除する便利なイメージ「spotify/docker-gc」

Dockerのコンテナをぽいぽい上げ下げしていると、どんどんイメージが溜まってディスク容量を圧迫してしまうというのはよくある話です。

この問題を解決するスマートな方法がありましたのでまとめます。

spotify/docker-gc

SpotifyのナイスガイがDockerのガベージコレクション(ゴミ拾い)をするスクリプトをGitHubにあげています。

1時間以上前に終了したコンテナと、起動中のコンテナに属していないイメージを削除してくれます。

使い方は簡単で、下記コマンドを打つだけです。

コンテナのお掃除

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc spotify/docker-gc

イメージのお掃除

イメージを削除する場合はREMOVE_VOLUMES=1という環境変数を指定します。

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc -e REMOVE_VOLUMES=1 spotify/docker-gc

Dry run

いきなり試すのが怖い場合は次のように環境変数を指定することでDry run(テスト)が可能です。

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc -e DRY_RUN=1 spotify/docker-gc

お掃除対象の微修正

デフォルトだと停止してから1h以上経っていないコンテナは削除対象になりませんが、GRACE_PERIOD_SECONDS変数に好きな値を指定することで調整可能です。

次の場合は停止してから86400(24h)以上経過したコンテナが削除対象になります。

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc -e GRACE_PERIOD_SECONDS=86400 spotify/docker-gc

強制削除

Dockerはコンテナ削除の際に問題が発生した場合、エラーを返して終了しますが、強制的に削除することも可能です。

FORCE_CONTAINER_REMOVAL=1

また、複数のリポジトリにタグづけされたイメージも削除しないようになっていますが、次の環境変数を指定することで強制削除できます。

FORCE_IMAGE_REMOVAL=1

まとめ

Dockerのガベージコレクションを簡単に実行できるspotify/docker-gcの使い方をまとめました。Cronに仕込むなりして自動化すれば、ルンバのごとくお掃除してくれてとっても助かります。やったね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください