紹介
Dockerは、アプリケーションやサービスをコンテナに包んでどこでも実行できるようにすることが簡単です。しかし、Dockerを使用するにつれて、未使用のイメージ、コンテナ、およびデータボリュームが過剰に蓄積され、出力を混乱させ、ディスク容量を消費することも簡単です。
Dockerは、コマンドラインからシステムをクリーンアップするための必要なツールをすべて提供します。このチートシート形式のガイドは、未使用のDockerイメージ、コンテナ、およびボリュームを削除してディスク容量を解放し、システムを整理するのに役立つコマンドのクイックリファレンスを提供します。
このガイドの使用方法:
- このガイドは、自己完結型のコマンドラインスニペット形式のチートシートです。
- 完了しようとしているタスクに関連するセクションにジャンプしてください。
注意:コマンドの中で使用されるコマンド置換構文、command $(command)
は、bash、zsh、およびWindows Powershellなどの多くの人気のあるシェルで利用可能です。
もしあなたがライブサーバーにDockerアプリケーションを1クリックでデプロイする方法を探しているなら、DigitalOcean App Platformをチェックしてみてください。
未使用またはダングリングのイメージ、コンテナ、ボリューム、およびネットワークの全削除
Dockerは、ダングリング(タグ付けされていないか、コンテナに関連付けられていない)イメージ、コンテナ、ボリューム、およびネットワークなど、任意のリソースをクリーンアップする単一のコマンドを提供しています。
さらに、停止されたコンテナと未使用のイメージ(ダングリングイメージだけでなく)を削除するには、コマンドに-a
フラグを追加してください。
Dockerイメージの削除
1つ以上の特定のイメージを削除する
まず、docker images
コマンドを使用し、-a
フラグを付けて、削除したいイメージのIDを特定します。これにより、すべてのイメージが表示され、中間イメージレイヤーも含まれます。削除したいイメージのIDやタグを docker rmi
に渡すことができます:
リスト:
削除:
注意: docker images
コマンドの -a
または --all
フラグは、すべてのDockerイメージを表示し、タグによって参照されていない中間イメージレイヤーも含んでいます。デフォルトでは、docker images
は少なくとも1つのタグがあるイメージのみを表示します。ただし、タグがないがまだシステムのディスクスペースを消費しているイメージが存在する可能性があります。-a
フラグは、ディスクスペースを節約するためにプルーニングできるイメージを識別するのに役立ちます。docker rmi
コマンドで使用する場合、-f
または --force
フラグも、タグのないイメージを削除するために使用できます。
ダングリングDockerイメージの削除
Dockerイメージは複数のレイヤーで構成されています。ダングリングイメージは、タグ付きイメージとの関係がなくなったレイヤーです。彼らはもはや目的を果たさず、ディスクスペースを消費しています。docker images
コマンドにフィルターフラグ -f
と値 dangling=true
を追加することで、ダングリングイメージを特定できます。削除することを確認したら、docker image prune
コマンドを使用できます:
注意: イメージをタグ付けせずに構築すると、タグ付けされたイメージとの関連がないため、イメージはダングリングイメージのリストに表示されます。 タグを指定してイメージを構築することで、この状況を回避できます。また、docker tag
コマンドを使用して、イメージに後からタグを付けることもできます。
リスト:
削除:
パターンに従ってイメージを削除する
docker images
とgrep
の組み合わせを使用して、パターンに一致するすべてのイメージを見つけることができます。満足したら、awk
を使用してIDをdocker rmi
に渡すことで、それらを削除できます。これらのユーティリティはDockerによって提供されておらず、すべてのシステムで必ずしも利用できるわけではありません。
リスト:
削除:
すべての画像を削除します
システム上のすべてのDockerイメージは、docker images
コマンドに-a
を追加することでリストアップできます。それらをすべて削除したいと確信したら、docker rmi
にイメージIDを渡すために-q
フラグを追加できます:
リスト:
削除:
コンテナの削除
1つ以上の特定のコンテナを削除する
削除したいコンテナの名前またはIDを見つけるには、docker ps
コマンドに-a
フラグを使用します:
リスト:
削除:
終了時にコンテナを削除する
docker run --rm
を実行して、終了時に自動的に削除されることを確認できます:
実行して削除:
すべての終了したコンテナを削除します
docker ps -a
を使用してコンテナを特定し、その状態によってフィルタリングできます:created
、restarting
、running
、paused
、または exited
。 exited
コンテナの一覧を確認するには、-f
フラグを使用して状態に基づいてフィルタリングします。これらのコンテナを削除することを確認したら、-q
を使用して ID を docker rm
コマンドに渡します:
リスト:
削除:
複数のフィルタを使用してコンテナを削除する
Dockerフィルタは、追加の値を使用してフィルタフラグを繰り返すことで組み合わせることができます。これにより、いずれかの条件を満たすコンテナのリストが得られます。たとえば、created
(無効なコマンドでコンテナを実行した場合に発生する状態)またはexited
としてマークされたすべてのコンテナを削除したい場合は、2つのフィルタを使用できます:
リスト:
削除:
パターンに従ってコンテナを削除します
docker ps
とgrep
の組み合わせを使用して、パターンに一致するすべてのコンテナを見つけることができます。削除したいリストを満足するまで見つけたら、awk
とxargs
を使用してIDをdocker rm
に供給できます。これらのユーティリティはDockerによって提供されておらず、すべてのシステムで利用可能とは限りません:
リスト:
削除:
すべてのコンテナを停止して削除します
システム上のコンテナを確認するには、docker ps
コマンドを使用できます。-a
フラグを追加すると、すべてのコンテナが表示されます。削除してもよいと確信したら、docker stop
および docker rm
コマンドに ID を供給するために -q
フラグを追加できます:
一覧:
削除:
ボリュームの削除
1つ以上の特定のボリュームを削除します
削除したいボリュームの名前を特定するために docker volume ls
コマンドを使用できます。それから、docker volume rm
コマンドで 1 つ以上のボリュームを削除できます:
一覧:
削除:
ダングリングボリュームを削除します
ボリュームの目的は、コンテナから独立して存在することです。そのため、コンテナが削除されても、ボリュームは自動的に削除されません。ボリュームが存在し、どのコンテナにも接続されていない場合、それは ダングリングボリュームと呼ばれます。これらを特定して削除するためには、docker volume ls
コマンドを使用し、ダングリングボリュームに結果を制限するフィルターを設定します。リストを確認したら、docker volume prune
を使用してすべてを削除できます:
リスト:
削除:
コンテナとそのボリュームを削除する
無名のボリュームを作成した場合、-v
フラグを使用してコンテナと同時に削除できます。ただし、これは 無名 のボリュームにのみ適用されます。コンテナが正常に削除されると、そのIDが表示されます。ボリュームの削除に言及されません。ボリュームが無名であれば、システムからサイレントに削除されます。名前が付けられている場合は、サイレントに残ります。
削除:
結論
このガイドでは、Dockerで使用される一般的なコマンドの一部を取り上げています。イメージ、コンテナ、およびボリュームを削除するために使用されます。それぞれに使用できる他の多くの組み合わせとフラグがあります。利用可能な機能の包括的なガイドについては、Dockerドキュメントのdocker system prune
、docker rmi
、docker rm
、およびdocker volume rm
を参照してください。ガイドに表示したい一般的なクリーンアップタスクがある場合は、コメントでお知らせいただくか、提案をお願いします。
Dockerコンテナの異なるコンポーネントを詳しく見るには、Dockerエコシステム:共通コンポーネントへの入門をご覧ください。
Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes