Docker イメージ、ボリューム、コンテナを数秒で削除
公開: 2023-03-03Docker は、開発者がデスクトップからクラウドに至るまでの異種プラットフォーム間でアプリケーションを作成および展開するのに役立つソフトウェア コンテナー化テクノロジです。
Docker コンテナ内でアプリケーションを構築するために必要なソース コード、依存関係、およびツールのスナップショット (青写真) は、イメージと呼ばれます。 永続的なデータを必要とする Docker アプリケーションは、基盤となるオペレーティング システムから独立した、ボリュームと呼ばれるストレージに依存できます。
Docker を使用する場合、イメージ、ボリューム、コンテナーを効果的に編成することが重要です。 これらのアセットの未使用の化身が蓄積し、貴重なディスク スペースを占有し、最終的にシステム パフォーマンスに影響を与える可能性があります。
この記事では、イメージ (個別にまたは一度にすべて)、ボリューム、およびコンテナーをクリアすることによって、システム編成を維持するさまざまな方法について説明します。 これらのタスクを迅速に完了するために、 docker
コマンド ライン インターフェイス (CLI) を使用します。
Docker イメージを削除する方法
古いイメージや不要なイメージを Docker から削除することは、クリーンで整理されたシステムを維持するために不可欠です。 CLI が特定のイメージを削除対象にする方法を見てみましょう。
まず、 docker image ls
コマンドを使用して、Docker 環境のイメージを見てみましょう。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 60 seconds ago 7.05MB <none> <none> 85b412789704 2 days ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
上記の画像をリストすると、 my_imageおよびdemoという名前の画像が明らかになり、どちらもlatest のタグが付けられています。 3 番目の画像には、名前もタグもありません。 この場合、それは「ぶら下がっている」イメージです。つまり、現在コンテナーによって使用されていないイメージです。 このぶら下がっているイメージは、 my_imageの再構築 (一般的なシナリオ) の結果です。 イメージの以前のバージョンはまだファイル システムにありますが、現在は使用されていません。
リストには、各画像の 64 文字の ID の最初の 12 文字、作成日、および画像が消費しているストレージ容量も表示されます。
未使用の画像をすべて削除
上記のリストの例では、ぶら下がり画像があります。 ただし、名前やタグのないイメージがアクティブになる可能性があります。 たとえば、ID を参照してコンテナーを開始するために使用された可能性があります。
本当にぶら下がっているすべてのイメージを安全に削除するには、 docker image prune
コマンドを使用できます。
$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Deleted Images: deleted: sha256:85b412789704c17e9c5e7edc97b2f64c748bbdae7eaa44d3fe2cc21a87acad3d Total reclaimed space: 7.05MB
画像をもう一度リストして、作業の結果を確認します。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 70 seconds ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
剪定後、名前やタグのない画像は消えてしまいました。
名前で特定の画像を削除する
その名前を参照することで、削除対象のイメージを指定できます。
$ docker image rm <image_name>
注:まだ使用されている画像を簡単に削除することはできません。 イメージを使用している実行中のコンテナーを停止または削除する必要があります。 通常はお勧めしませんが、 -f
フラグを使用してアクティブなイメージを強制的に削除できます。
$ docker image rm <image_name> -f
イメージを削除するための rmi ショートハンドの使用
Docker CLI には、エイリアスrmi
のイメージを削除する簡単な方法があります。 これを使用して名前で画像を削除するには、次のようにします。
$ docker rmi demo Untagged: demo:latest Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4
次のイメージ削除の例ではrmi
を使用します。
タグの付いていない画像をすべて削除
タグ付けされていないイメージは依然として貴重なディスク スペースを占有しているため、時間の経過とともにシステムがますます遅くなります。
Docker でタグ付けされていないすべてのイメージを削除するには、フィルターを指定してdocker rmi
コマンドを使用します。 -f
オプションを使用して、特定の基準に基づいてフィルターを提供できます (アクションを強制するためにimage rm
で使用できる-f
フラグと混同しないでください)。
フィルタdangling=true
、タグ付けされていない画像を識別するために使用されます。
$ docker rmi $(docker images -f "dangling=true" -q)
上記のコマンドの-q
オプションは、タグ付けされていないすべてのイメージのイメージ ID を表示します。 これらの ID はすべてdocker rmi
に引数として渡され、削除されます。
このフィルターは「ぶら下がっている」というキーワードを使用しますが、前述のように、タグのない一部の画像が実際にアクティブである可能性があります。 このフィルターで選択された画像が本当にぶら下がっていない場合は、警告が表示されます。
ID で特定の画像を削除する
docker rmi
コマンドを使用して、その ID を参照することで特定のイメージを削除できます。
$ docker rmi <image_id>
名前とタグで特定の画像を削除する
docker rmi
コマンドを使用して、特定のイメージをその名前とタグとともに削除できます。
たとえば、同じ名前でタグが異なる複数の画像がある場合、次の形式を使用して特定の画像を削除できます。
$ docker rmi <image_name>:<tag>
この方法は、リポジトリに関連するすべてのイメージを削除するのではなく、特定のバージョンのイメージを削除する場合に便利です。
最新のタグが付いたすべての画像を削除
Docker では、「latest」タグは特定の Docker イメージの最新バージョンを指します。 latest タグは、多くの場合、Docker イメージのデフォルト タグとして使用されます。 別のタグが明示的に指定されていない限り、イメージの最新のビルドに自動的に割り当てられます。
Docker は、「latest」タグが付いたすべてのイメージを削除するコマンドを提供します。
$ docker rmi $(docker images | grep "latest" | awk '{print $3}')
上記のコマンドは 2 つの部分に分かれています。 最初にイメージ ID のリストを取得し、次にこのリストを引数としてdocker rmi
コマンドに渡します。
リモート リポジトリからイメージを削除する
Docker Hub などのリモート リポジトリからイメージを削除するには、まず Docker CLI を使用してアカウントにログインする必要があります。
ログインしたら、 docker rmi
コマンドを使用してイメージを削除するだけです。 docker rmi
コマンドは、ローカル イメージとリモート イメージの両方を削除できます。
docker rmi my_repo/my_image_tag
特に、リポジトリにプッシュされたイメージのみを削除できます。 同様に、実行中のコンテナーで使用されているイメージを削除することはできません。
リモート リポジトリから複数のイメージを削除する
リモート リポジトリから複数のイメージを削除するには、 docker rmi
コマンドに続けてイメージ ID またはタグを使用できます。 例えば:
docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3
これにより、タグimage_tag_1
、 image_tag_2
、およびimage_tag_3
を持つ 3 つのイメージがリポジトリmy_repo
から削除されます。
Docker ボリュームを削除する方法
Docker ボリュームは、大量のデータや複数のバックアップが含まれている場合は特に、多くのディスク領域を占有する可能性があります。 不要になったボリュームを削除することで、データ侵害のリスクを軽減し、許可されていないユーザーが機密データにアクセスできないようにします。 ボリュームを定期的に削除することで、Docker 環境を最新の状態に保ち、古いデータによる問題を防ぐこともできます。
これらのコマンドは、ボリュームに保存されているすべてのデータを完全に破壊するため、注意して使用してください。
未使用のボリュームをすべて削除
Docker では、未使用のボリュームを削除することは、イメージやコンテナーを削除することと同じくらい重要です。
ディスク ストレージを解放するには、 docker volume prune
コマンドを使用できます。
名前で特定のボリュームを削除する
Docker で特定のボリュームを削除すると、未使用のボリュームを削除するのに役立ちます。 ボリュームを削除するコマンドは次のとおりです。
docker volume rm my_volume_name
上記のコマンドで、ボリュームmy_volume_nameが削除されます。 使用済みのボリュームを削除しようとすると、Docker はエラーを生成します。 docker volume ls
コマンドを使用して、使用可能なボリュームを確認できます。
Docker コンテナを削除する方法
Docker を使用するにつれて、ディスク リソースを占有する多くの未使用のコンテナーが蓄積される可能性があります。 それらを削除しないと、時間の経過とともに蓄積され、貴重なディスク リソースが占有され、システムの速度が低下し、危険にさらされる可能性があります。
停止中のコンテナをすべて削除
コマンドdocker container prune
Docker で停止しているすべてのコンテナーを削除できます。 ここで、コマンドは、削除されるすべての停止済みコンテナーのリストを作成し、続行する前に確認を求めます。 これにより、ディスク容量を再利用し、クリーンで整理された Docker 環境を維持しながら、重要なものを失っていないことを再確認できます。
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4df4c47c4df4 d35bcec20bce
このコマンドで削除できるのは、停止しているコンテナーのみであることに注意してください。 実行中のコンテナーを削除する必要がある場合は、最初にコンテナーを停止するか、別のコマンドを使用する必要があります。
ID による特定のコンテナの削除
Docker では、 docker rm command
とコンテナー ID を使用して、ID で特定のコンテナーを削除できます。 まず、 docker ps command
使用してすべてのコンテナー ID を取得します。
$ docker ps -a -q 1ce3cdeb4035 06b79541e25c fa98f1804e3e $ docker rm 1ce3cdeb4035
上記のコマンドは、コンテナーが停止状態の場合にのみ機能します。 コンテナーが実行中の場合は、 -f フラグを使用して強制的に削除する必要があります。
$ docker rm -f 1ce3cdeb4035
名前で特定のコンテナを削除する
Docker は、名前と ID で両方のコンテナーを削除するための多目的docker rm
コマンドを提供します。
たとえば、 web_serverという名前のコンテナーがある場合は、次のコマンドを使用して削除できます。
$ docker rm web_server
まず、コンテナを停止することが重要です。 Docker には、特定のコンテナーを停止するためのdocker stop
コマンドが用意されています。
実行中のコンテナをすべて削除
実行中のすべてのコンテナーを削除するには、 docker rm
コマンドを使用できます。
$ docker rm $(docker ps -q)
docker ps -q
を使用すると、実行中のコンテナーの ID が一覧表示されます。 その後、ID がdocker rm
コマンドに渡され、すべてのコンテナーが削除されます。
このコマンドは、実行中のコンテナーのみを削除することに注意してください。 停止したものを含むすべてのコンテナーを削除する場合は、代わりに次のコマンドを使用できます。
$ docker rm $(docker ps -a -q)
まとめ
この記事では、Docker イメージ、ボリューム、およびコンテナーを削除する方法について説明しました。 クリーンで組織化されたシステムを維持するためのさまざまな方法を学びました。 未使用、タグなし、または特定のイメージをすべて ID または名前で削除するコマンドについて説明しました。 また、停止したすべてのコンテナーまたは特定のコンテナーを ID または名前で削除するコマンドも学習しました。
Docker イメージ、ボリューム、およびコンテナーの削除は、未使用のコンポーネントを管理し、貴重なディスク領域を回復し、多くの場合システム パフォーマンスを向上させるのに役立つ簡単なプロセスです。
開発者を Docker に惹きつけるのはこのシンプルさであり、Kinsta のアプリケーション ホスティング プラットフォームほど Docker で開発されたアプリケーションをデプロイする簡単な方法はありません。 今すぐ無料でお試しいただけます。