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 images
とgrep
の組み合わせを使用して、パターンに一致するすべての画像を見つけることができます。 満足したら、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 ps
とgrepの組み合わせを使用して、パターンに一致するすべてのコンテナーを見つけることができます。 削除するリストがあることを確認したら、awk
とxargs
を使用して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 prune
、docker rmi
、docker rm
、およびdocker volume rm
のDockerドキュメントを参照してください。 ガイドに表示する一般的なクリーンアップタスクがある場合は、コメントで質問するか提案を行ってください。