Dockerイメージ、コンテナー、およびボリュームを削除する方法

Dockerチートシート

前書き

Dockerを使用すると、アプリケーションやサービスをコンテナに簡単にラップできるため、どこでも実行できます。 ただし、Dockerを使用する場合、出力を乱雑にし、ディスクスペースを消費する未使用の画像、コンテナ、およびデータボリュームを過剰に蓄積することも簡単です。

Dockerは、コマンドラインからシステムをクリーンアップするために必要なすべてのツールを提供します。 このチートシートスタイルのガイドは、ディスク領域を解放し、未使用のDockerイメージ、コンテナー、およびボリュームを削除してシステムを整理するのに役立つコマンドのクイックリファレンスを提供します。

このガイドの使用方法:

  • このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。

  • 完了しようとしているタスクに関連するセクションにジャンプします。

コマンドで使用されるコマンド置換構文command $(command)は、bash、zsh、WindowsPowershellなどの多くの一般的なシェルで使用できます。

未使用またはダングリングのすべてのイメージ、コンテナ、ボリューム、およびネットワークのパージ

Dockerは、ぶら下がっている(コンテナーに関連付けられていない)リソース(イメージ、コンテナー、ボリューム、およびネットワーク)をクリーンアップする単一のコマンドを提供します。

docker system prune

停止したコンテナとすべての未使用のイメージ(ぶら下がっているイメージだけでなく)をさらに削除するには、コマンドに-aフラグを追加します。

docker system prune -a

Dockerイメージの削除

1つ以上の特定の画像を削除する

-aフラグを指定したdocker imagesコマンドを使用して、削除するイメージのIDを見つけます。 これにより、中間画像レイヤーを含むすべての画像が表示されます。 削除する画像を見つけたら、そのIDまたはタグをdocker rmiに渡すことができます。

リスト:

docker images -a

削除します。

docker rmi Image Image

ぶら下がり画像を削除する

Dockerイメージは複数のレイヤーで構成されています。 ダングリングイメージは、タグ付けされたイメージとは関係のないレイヤーです。 それらはもはや目的を果たさず、ディスク容量を消費します。 これらは、docker imagesコマンドにdangling=trueの値を持つフィルターフラグ-fを追加することで見つけることができます。 それらを削除することが確実な場合は、docker images purgeコマンドを使用できます。

Note: If you build an image without tagging it, the image will appear on the list of dangling images because it has no association with a tagged image. You can avoid this situation by https://docs.docker.com/engine/reference/commandline/build//tag-image—​t[providing a tag] when you build, and you can retroactively tag an images with the docker tag command.
#

リスト:

docker images -f dangling=true

削除します。

docker images purge

パターンに従って画像を削除する

docker imagesgrepの組み合わせを使用して、パターンに一致するすべての画像を見つけることができます。 満足したら、awkを使用してIDをdocker rmiに渡すことにより、それらを削除できます。 これらのユーティリティはDockerによって提供されているわけではなく、必ずしもすべてのシステムで利用できるわけではないことに注意してください。

リスト:

docker images -a |  grep "pattern"

削除します。

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

すべての画像を削除

docker imagesコマンドに-aを追加すると、システム上のすべてのDockerイメージを一覧表示できます。 それらをすべて削除することを確認したら、-qフラグを追加して、イメージIDをdocker rmiに渡すことができます。

リスト:

docker images -a

削除します。

docker rmi $(docker images -a -q)

コンテナの削除

1つ以上の特定のコンテナーを削除します

-aフラグを指定したdocker psコマンドを使用して、削除するコンテナーの名前またはIDを見つけます。

リスト:

docker ps -a

削除します。

docker rm ID_or_Name ID_or_Name

終了時にコンテナを削除する

コンテナを作成しているときに、完了したらコンテナを保持したくないことがわかっている場合は、docker run --rmを実行して、コンテナが終了したときに自動的に削除できます。

実行および削除:

docker run --rm image_name

終了したコンテナをすべて削除します

docker ps -aを使用してコンテナを検索し、ステータス(作成済み、再起動中、実行中、一時停止中、または終了済み)でフィルタリングできます。 終了したコンテナのリストを確認するには、-fフラグを使用してステータスに基づいてフィルタリングします。 これらのコンテナを削除することを確認したら、-qを使用してIDをdocker rmコマンドに渡します。

リスト:

docker ps -a -f status=exited

削除します。

docker rm $(docker ps -a -f status=exited -q)

複数のフィルターを使用してコンテナーを削除する

Dockerフィルターは、フィルターフラグを追加の値で繰り返すことで組み合わせることができます。 これにより、いずれかの条件を満たすコンテナのリストが作成されます。 たとえば、Created(無効なコマンドでコンテナーを実行すると発生する可能性のある状態)またはExitedのいずれかとしてマークされたすべてのコンテナーを削除する場合は、次の2つのフィルターを使用できます。

リスト:

docker ps -a -f status=exited -f status=created

削除します。

docker rm $(docker ps -a -f status=exited -f status=created -q)

パターンに従ってコンテナを削除する

docker psgrepの組み合わせを使用して、パターンに一致するすべてのコンテナーを見つけることができます。 削除するリストがあることを確認したら、awkxargsを使用してIDをdocker rmiに指定できます。 これらのユーティリティはDockerによって提供されているわけではなく、必ずしもすべてのシステムで利用できるわけではないことに注意してください。

リスト:

docker ps -a |  grep "pattern”

削除します。

docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

すべてのコンテナを停止して削除する

docker psを使用して、システム上のコンテナーを確認できます。 -aフラグを追加すると、すべてのコンテナーが表示されます。 それらを削除することが確実な場合は、-qフラグを追加して、docker stopおよびdocker rmコマンドにIDを指定できます。

リスト:

docker ps -a

削除します。

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

ボリュームの削除

1つ以上の特定のボリュームを削除する-Docker 1.9以降

docker volume lsコマンドを使用して、削除する1つまたは複数のボリューム名を見つけます。 次に、docker volume rmコマンドを使用して1つ以上のボリュームを削除できます。

リスト:

docker volume ls

削除します。

docker volume rm volume_name volume_name

宙ぶらりんのボリュームを削除する-Docker 1.9以降

ボリュームのポイントはコンテナから独立して存在することであるため、コンテナが削除されると、ボリュームは同時に自動的に削除されません。 ボリュームが存在し、どのコンテナにも接続されていない場合、そのボリュームはダングリングボリュームと呼ばれます。 それらを見つけて削除することを確認するには、フィルターを指定したdocker volume lsコマンドを使用して、結果をぶら下がっているボリュームに制限します。 リストに満足したら、docker volume pruneを使用してすべてを削除できます。

リスト:

docker volume ls -f dangling=true

削除します。

docker volume prune

コンテナとそのボリュームを削除する

名前のないボリュームを作成した場合は、-vフラグが付いたコンテナーと同時に削除できます。 これはunnamedボリュームでのみ機能することに注意してください。 コンテナが正常に削除されると、そのIDが表示されます。 ボリュームの削除については言及されていないことに注意してください。 名前が付けられていない場合は、システムから静かに削除されます。 名前が付けられている場合、静かに存在し続けます。

削除します。

docker rm -v container_name

結論

このガイドでは、Dockerを使用してイメージ、コンテナー、およびボリュームを削除するために使用される一般的なコマンドの一部を説明します。 それぞれに使用できる他の多くの組み合わせとフラグがあります。 利用可能なものの包括的なガイドについては、docker system prunedocker rmidocker rm、およびdocker volume rmのDockerドキュメントを参照してください。 ガイドに表示する一般的なクリーンアップタスクがある場合は、コメントで質問するか提案を行ってください。