アンドロイド

Dockerコンテナ、画像、ボリューム、およびネットワークを削除する方法

株式会社博展 - 東芝実績動画

株式会社博展 - 東芝実績動画

目次:

Anonim

Dockerを使用すると、アプリケーションを迅速に構築、テスト、および展開でき、事実上どこでも実行できる自給自足型のコンテナとして使用できます。

Dockerは、コンテナ、イメージ、ボリューム、ネットワークなどの未使用のオブジェクトを、明示的に削除しない限り削除しません。 Dockerを使用すると、大量のディスクスペースを消費する未使用のオブジェクトを簡単に蓄積し、Dockerコマンドによって生成される出力を乱雑にすることができます。

このガイドは、Dockerユーザーがシステムを整理し、未使用のDockerコンテナ、イメージ、ボリューム、およびネットワークを削除してディスク容量を解放するための「チートシート」として機能します。

未使用のオブジェクトをすべて削除する

docker system prune コマンドは、停止したすべてのコンテナー、ぶら下がりイメージ、および未使用のネットワークをすべて削除します。

docker system prune

続行するように求められます。 -f または --force フラグを使用して、プロンプトをバイパスします。

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue?

docker system prune --volumes

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? y

Dockerコンテナーの削除

Dockerコンテナは、 --rm フラグを使用してコンテナを起動しない限り、停止しても自動的に削除されません。

1つ以上のコンテナーを削除する

1つ以上のDockerイメージを削除するには、 docker container rm コマンドに続けて、削除するコンテナーのIDを使用します。

docker container ls コマンドに -a フラグを渡すことで、すべてのコンテナーのリストを取得できます。

docker container ls -a

出力は次のようになります。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc3f2ff51cab centos "/bin/bash" 2 months ago Created competent_nightingale cd20b396a061 solita/ubuntu-systemd "/bin/bash -c 'exec …" 2 months ago Exited (137) 2 months ago systemd fb62432cf3c1 ubuntu "/bin/bash" 3 months ago Exited (130) 3 months ago jolly_mirzakhani

削除するコンテナのコンテナ CONTAINER ID がわかったら、それを docker container rm コマンドに渡します。 たとえば、上記の出力にリストされている最初の2つのコンテナを削除するには、次を実行します。

docker container rm cc3f2ff51cab cd20b396a061

Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.

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

除去コマンドを実行する前に、次のコマンドを使用して、除去されるすべての非実行(停止)コンテナーのリストを取得できます。

docker container ls -a --filter status=exited --filter status=created

停止したコンテナをすべて削除するには、 docker container prune コマンドを使用します。

docker container prune

続行するように求められます。 -f または --force フラグを使用して、プロンプトをバイパスします。

WARNING! This will remove all stopped containers. Are you sure you want to continue? y

フィルターを使用してコンテナーを削除する

docker container prune コマンドを使用すると、フィルタリングフラグ --filter を使用して、条件に基づいてコンテナを削除できます。

この記事の執筆時点で、現在サポートされているフィルターは until および label です。 複数の --filter フラグを使用して、複数のフィルターを使用できます。

たとえば、12時間以上前に作成されたすべての画像を削除するには、次を実行します。

docker container prune --filter "until=12h"

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

docker container ls -aq コマンドを使用して、システム上のすべてのDockerコンテナーのリストを取得できます。

実行中のすべてのコンテナを停止するには、 docker container stop コマンドの後にすべてのコンテナIDのリストを使用します。

docker container stop $(docker container ls -aq)

すべてのコンテナが停止したら、 docker container rm コマンドに続けてコンテナIDリストを使用して docker container rm を削除できます。

docker container rm $(docker container ls -aq)

Dockerイメージの削除

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

1つ以上のDockerイメージを削除するには、 docker images ls コマンドを使用して、削除するイメージのIDを見つけます。

docker image ls

出力は次のようになります。

REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 75835a67d134 7 days ago 200MB ubuntu latest 2a4cca5ac898 2 months ago 111MB linuxize/fedora latest a45d6dca3361 3 months ago 311MB java 8-jre e44d62cf8862 3 months ago 311MB

削除したい画像を docker image rm たら、それらの IMAGE ID docker image rm コマンドに渡します。 たとえば、上記の出力にリストされている最初の2つのイメージを削除するには、次を実行します。

docker image rm 75835a67d134 2a4cca5ac898

Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container cd20b396a061 is using its referenced image 75835a67d134

ぶら下がり画像を削除する

Dockerは、ぶら下がった未使用のイメージを削除するために使用できる docker image prune コマンドを提供します。

ぶら下がり画像は、タグ付けされておらず、どのコンテナでも使用されていない画像です。 ぶら下がり画像を削除するには、次のように入力します。

docker image prune

続行するように求められます。 -f または --force フラグを使用して、プロンプトをバイパスします。

WARNING! This will remove all dangling images. Are you sure you want to continue? y ぶら下がり画像を削除するときに、自分で作成した画像にタグが付けられていない場合は、それらも削除されます。

未使用の画像をすべて削除する

ぶら下がっているものだけでなく、既存のコンテナーによって参照されていないすべてのイメージを削除するには、 -a フラグを -a して prune コマンドを使用します。

docker image prune -a

WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? y

フィルターを使用して画像を削除する

docker image prune コマンドでは、フィルタリングフラグ --filter を使用して、特定の条件に基づいて画像を削除することもできます。

この記事の執筆時点で、現在サポートされているフィルターは until および label です。 複数の --filter フラグを使用して、複数のフィルターを使用できます。

たとえば、12時間以上前に作成されたすべての画像を削除するには、次を実行します。

docker image prune -a --filter "until=12h"

Dockerボリュームの削除

1つ以上のボリュームを削除する

1つ以上のDockerボリュームを削除するには、 docker volume ls コマンドを使用して、削除するボリュームのIDを見つけます。

docker volume ls

出力は次のようになります。

DRIVER VOLUME NAME local 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163 local terano

削除するボリュームの VOLUME NAME が見つかったら、それらを docker volume rm コマンドに渡します。 たとえば、上記の出力にリストされている最初のボリュームを削除するには、次を実行します。

docker volume rm 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163

Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use -

未使用のボリュームをすべて削除する

未使用のボリュームをすべて削除するには、 docker image prune コマンドを使用します。

docker volume prune

続行するように求められます。 -f または --force フラグを使用して、プロンプトをバイパスします。

WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue?

Dockerネットワークの削除

1つ以上のネットワークを削除します

1つ以上のDockerネットワークを削除するには、 docker network ls コマンドを使用して、削除するネットワークのIDを見つけます。

docker network ls

出力は次のようになります。

NETWORK ID NAME DRIVER SCOPE 107b8ac977e3 bridge bridge local ab998267377d host host local c520032c3d31 my-bridge-network bridge local 9bc81b63f740 none null local

削除するネットワークを特定したら、その NETWORK ID docker network rm コマンドに渡します。 たとえば my-bridge-network という名前のネットワークを削除するには my-bridge-network 実行します。

docker network rm c520032c3d31

Error response from daemon: network my-bridge-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints

未使用のネットワークをすべて削除します

docker network prune コマンドを使用して、未使用のネットワークをすべて削除します。

docker network prune

続行するように求められます。 -f または --force フラグを使用して、プロンプトをバイパスします。

WARNING! This will remove all networks not used by at least one container. Are you sure you want to continue?

フィルターを使用してネットワークを削除する

docker network prune コマンドを使用すると、フィルタリングフラグ --filter を使用して、条件に基づいてネットワークを削除できます。

この記事の執筆時点で、現在サポートされているフィルターは until および label です。 複数の --filter フラグを使用して、複数のフィルターを使用できます。

たとえば、12時間以上前に作成されたすべてのネットワークを削除するには、次を実行します。

docker network prune -a --filter "until=12h"

結論

このガイドでは、Dockerコンテナ、イメージ、ボリューム、およびネットワークを削除するための一般的なコマンドの一部を示しました。

Dockerの公式ドキュメントも確認してください。

ドッカー