Dockerで不要なイメージやコンテナ等のリソースをクリーンアップする方法

なぜリソースのクリーンアップが必要か?

docker-composeでイメージをビルドしたり、コンテナを起動する際にリソース不足で失敗することがあります。

エラー自体は、ディスク容量が不足していることがたいていの理由なので、Docker DesktopでResourcesから増やすことで回避できます。

masayan
masayan

この対処自体も限界があるので、定期的に本記事で紹介するコマンドたちを実行してクリーンアップしておくのが吉です。

リソースはまとめて一括で削除するか、個別のリソースを指定して削除するかの2通りのやり方があります

全てのリソースを削除

docker system prune
masayan
masayan

上記のコマンドにより以下のデータがクリーンアップされます

  • 停止しているコンテナ(= compose downしていない)
  • 使用されていないイメージ
  • 使用されていないネットワーク
  • 過去にイメージをbuildした際に作成されたキャッシュ
未使用のボリューム(そのボリュームを使用しているコンテナがないボリューム)は、上記コマンドでは削除されません。

ボリュームも併せて削除したい場合は、以下のようにします

docker system prune --volumes
公式によると、ボリュームを参照するコンテナーがないだけで、本来は削除したくない重要なデータが誤って削除されてしまうことを防止するためとのこと
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/builder_prune/

リソースを指定して削除

コンテナ

未使用(停止中)のコンテナをすべて削除

docker container prune
docker container prune
docker container prune: 停止中のコンテナーをすべて削除します。

イメージ

未使用のイメージをすべて削除

masayan
masayan

タグ付けされておらず、全コンテナ(動いているか止まっているかは問わない)から参照されていないイメージが削除されます

docker image prune
docker image prune
docker image prune: 未使用のイメージを削除します。 `-a` を指定すると、どのコンテナーからも参照されていないイメージを含めてすべてが削除されます。
-aをオプションで付けると、タグ付けされていても、コンテナから使用されていないイメージをすべて削除することが可能です

ボリューム

未使用のローカルボリューム(どのコンテナからも参照されていないボリューム)をすべて削除

docker volume prune
docker volume prune
docker volume prune: 未使用のローカルボリュームを削除します。 未使用のローカルボリュームとは、どのコンテナーからも参照されていないボリュームのことです。

ネットワーク

未使用のネットワーク(どのコンテナーからも参照されていないネットワーク)をすべて削除

docker network prune
docker network prune
docker network prune: 未使用のネットワークをすべて削除します。 未使用のネットワークとは、どのコンテナーからも参照されていないネットワークのことです。

ビルドキャッシュ

未使用のビルドキャッシュをすべて削除

docker builder prune

Docker学習におすすめの書籍

タイトルとURLをコピーしました