序章

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

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

このガイドの使用方法:

  • このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。
  • 完了しようとしているタスクに関連するセクションにジャンプします。

注:コマンドで使用されるコマンド置換構文command $(command)は、 bash zsh WindowsPowershell

未使用またはぶら下がっているすべてのイメージ、コンテナ、ボリューム、およびネットワークをパージする

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

  1. docker system prune

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

  1. docker system prune -a

Dockerイメージの削除

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

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

リスト:

  1. docker images -a

削除する:

  1. docker rmi Image Image

ぶら下がっている画像を削除する

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

注:タグ付けせずにイメージを作成すると、タグ付けされたイメージとの関連付けがないため、そのイメージはぶら下がっているイメージのリストに表示されます。 この状況を回避するには、ビルド時にタグを提供し、 dockertagコマンドを使用してイメージに遡及的にタグを付けることができます。

リスト:

  1. docker images -f dangling=true

削除する:

  1. docker image prune

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

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

リスト:

  1. docker images -a | grep "pattern"

削除する:

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

すべての画像を削除する

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

リスト:

  1. docker images -a

削除する:

  1. docker rmi $(docker images -a -q)

コンテナの削除

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

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

リスト:

  1. docker ps -a

削除する:

  1. docker rm ID_or_Name ID_or_Name

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

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

実行および削除:

  1. docker run --rm image_name

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

docker ps -aを使用してコンテナを検索し、ステータス(createdrestartingrunningpaused、またはexitedexitedコンテナのリストを確認するには、-fフラグを使用して、ステータスに基づいてフィルタリングします。 これらのコンテナを削除することを確認したら、-qを使用してIDをdocker rmコマンドに渡します。

リスト:

  1. docker ps -a -f status=exited

削除する:

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

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

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

リスト:

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

削除する:

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

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

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

リスト:

  1. docker ps -a | grep "pattern

削除する:

  1. docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

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

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

リスト:

  1. docker ps -a

削除する:

  1. docker stop $(docker ps -a -q)
  2. docker rm $(docker ps -a -q)

ボリュームの削除

1つ以上の特定のボリュームを削除します-Docker1.9以降

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

リスト:

  1. docker volume ls

削除する:

  1. docker volume rm volume_name volume_name

ぶら下がっているボリュームを削除する-Docker1.9以降

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

リスト:

  1. docker volume ls -f dangling=true

削除する:

  1. docker volume prune

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

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

削除する:

  1. docker rm -v container_name

結論

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

Dockerコンテナーのさまざまなコンポーネントの詳細については、 Dockerエコシステム:一般的なコンポーネントの概要をご覧ください。