Dockerイメージ、コンテナー、およびボリュームを削除する方法
序章
Docker を使用すると、アプリケーションとサービスをコンテナーに簡単にラップできるため、どこでも実行できます。 ただし、Dockerを使用する場合、出力を乱雑にし、ディスク領域を消費する未使用のイメージ、コンテナー、およびデータボリュームを過剰に蓄積することも簡単です。
Dockerは、コマンドラインからシステムをクリーンアップするために必要なすべてのツールを提供します。 このチートシートスタイルガイドは、ディスクスペースを解放し、未使用のDockerイメージ、コンテナー、およびボリュームを削除してシステムを整理するのに役立つコマンドのクイックリファレンスを提供します。
このガイドの使用方法:
- このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。
- 完了しようとしているタスクに関連するセクションにジャンプします。
注:コマンドで使用されるコマンド置換構文command $(command)
は、 bash 、 zsh 、 WindowsPowershell。
未使用またはぶら下がっているすべてのイメージ、コンテナ、ボリューム、およびネットワークをパージする
Dockerは、ぶら下がり(タグ付けされていない、またはコンテナーに関連付けられていない)のリソース(イメージ、コンテナー、ボリューム、ネットワーク)をクリーンアップする単一のコマンドを提供します。
docker system prune
停止したコンテナとすべての未使用のイメージ(ぶら下がっているイメージだけでなく)をさらに削除するには、コマンドに-a
フラグを追加します。
docker system prune -a
Dockerイメージの削除
1つ以上の特定の画像を削除する
docker images
コマンドと-a
フラグを使用して、削除する画像のIDを見つけます。 これにより、中間画像レイヤーを含むすべての画像が表示されます。 削除する画像を見つけたら、そのIDまたはタグをdocker rmi
に渡すことができます。
リスト:
docker images -a
削除する:
docker rmi Image Image
ぶら下がっている画像を削除する
Dockerイメージは複数のレイヤーで構成されています。 ぶら下がっている画像は、タグ付けされた画像とは関係のないレイヤーです。 それらはもはや目的を果たさず、ディスクスペースを消費します。 これらは、docker images
コマンドにdangling=true
の値を持つフィルターフラグ-f
を追加することで見つけることができます。 それらを削除することが確実な場合は、docker image prune
コマンドを使用できます。
注:タグ付けせずにイメージを作成すると、タグ付けされたイメージとの関連付けがないため、そのイメージはぶら下がっているイメージのリストに表示されます。 この状況を回避するには、ビルド時にタグを提供し、 dockertagコマンドを使用してイメージに遡及的にタグを付けることができます。
リスト:
docker images -f dangling=true
削除する:
docker image prune
パターンに従って画像を削除する
docker images
とgrepの組み合わせを使用して、パターンに一致するすべての画像を見つけることができます。 満足したら、awkを使用してIDをdocker rmi
に渡すことでそれらを削除できます。 これらのユーティリティはDockerによって提供されているわけではなく、必ずしもすべてのシステムで利用できるわけではないことに注意してください。
リスト:
docker images -a | grep "pattern"
削除する:
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
すべての画像を削除する
-a
をdocker images
コマンドに追加すると、システム上のすべてのDockerイメージを一覧表示できます。 それらをすべて削除することを確認したら、-q
フラグを追加して、イメージIDをdocker rmi
に渡すことができます。
リスト:
docker images -a
削除する:
docker rmi $(docker images -a -q)
コンテナの削除
1つ以上の特定のコンテナを削除します
docker ps
コマンドを-a
フラグとともに使用して、削除するコンテナーの名前またはIDを見つけます。
リスト:
docker ps -a
削除する:
docker rm ID_or_Name ID_or_Name
終了時にコンテナを削除します
コンテナを作成しているときに、一度作成したコンテナを保持したくない場合は、docker run --rm
を実行して、コンテナが終了したときに自動的に削除できます。
実行および削除:
docker run --rm image_name
終了したすべてのコンテナを削除します
docker ps -a
を使用してコンテナを検索し、ステータス(created
、restarting
、running
、paused
、またはexited
。 exited
コンテナのリストを確認するには、-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 ps
とgrepの組み合わせを使用して、パターンに一致するすべてのコンテナーを見つけることができます。 削除したいリストがあることを確認したら、awkとxargs
を使用してdocker rm
にIDを指定できます。 これらのユーティリティはDockerによって提供されているわけではなく、必ずしもすべてのシステムで利用できるわけではないことに注意してください。
リスト:
docker ps -a | grep "pattern”
削除する:
docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm
すべてのコンテナを停止して削除します
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つ以上の特定のボリュームを削除します-Docker1.9以降
docker volume ls
コマンドを使用して、削除する1つまたは複数のボリューム名を見つけます。 次に、docker volume rm
コマンドを使用して、1つ以上のボリュームを削除できます。
リスト:
docker volume ls
削除する:
docker volume rm volume_name volume_name
ぶら下がっているボリュームを削除する-Docker1.9以降
ボリュームのポイントはコンテナーから独立して存在するため、コンテナーが削除されても、ボリュームが同時に自動的に削除されることはありません。 ボリュームが存在し、どのコンテナにも接続されていない場合、それはダングリングボリュームと呼ばれます。 それらを見つけて削除することを確認するには、docker volume ls
コマンドをフィルターとともに使用して、結果をぶら下がっているボリュームに制限します。 リストに満足したら、docker volume prune
ですべて削除できます。
リスト:
docker volume ls -f dangling=true
削除する:
docker volume prune
コンテナとそのボリュームを削除します
名前のないボリュームを作成した場合は、-v
フラグが付いたコンテナーと同時に削除できます。 これは、名前のないボリュームでのみ機能することに注意してください。 コンテナが正常に削除されると、そのIDが表示されます。 ボリュームの削除については言及されていないことに注意してください。 名前がない場合は、システムからサイレントに削除されます。 名前が付けられている場合は、黙って存在し続けます。
削除する:
docker rm -v container_name
結論
このガイドでは、Dockerを使用してイメージ、コンテナー、およびボリュームを削除するために使用される一般的なコマンドのいくつかについて説明します。 それぞれで使用できる他の多くの組み合わせとフラグがあります。 利用可能なものの包括的なガイドについては、 docker system prune 、 docker rmi 、 docker rm 、および docker volumermのDockerドキュメントを参照してください。 ]。 ガイドに表示したい一般的なクリーンアップタスクがある場合は、コメントで質問または提案してください。
Dockerコンテナーのさまざまなコンポーネントの詳細については、 Dockerエコシステム:一般的なコンポーネントの概要をご覧ください。