GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerイメージを削除するための完全ガイド

Dockerイメージを作成し続けると、すぐにスペースが不足し始めます。古い未使用のDockerイメージを削除すると、十分なディスク容量が解放されます。

この記事では、システムからDockerイメージを削除するさまざまなシナリオについて説明します。

Dockerイメージを削除する方法

まず、次のコマンドを使用して、システムに存在するDockerイメージを確認します。

docker images

出力には、すべてのDockerイメージとそのイメージIDが表示されます。システムからDockerイメージを削除するには、このイメージ名(リポジトリ列の下)またはイメージIDが必要です。

[email protected]:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              67e34c1c9477        2 weeks ago         114MB
ubuntu              latest              775349758637        6 weeks ago         64.2MB

イメージIDを使用すると、次の方法でDockerイメージを削除できます。

docker rmi image_name_or_id

どちらも同じであるため、このコマンドを使用することもできます:

docker image rm image_id

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

[email protected]:~$ docker rmi 67e34c1c9477
Untagged: debian:latest
Untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
Deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
Deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb

画像IDを使用すると、そのIDに関連付けられているすべての画像が削除されます。

コンテナに関連付けられているDockerイメージを削除します

そのようなDockerイメージを削除できれば、生活はずっとシンプルになります。しかし、それは頻繁には起こりません。

Dockerイメージに関連付けられたコンテナがある場合、イメージを削除しようとするとエラーが発生します。

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (cannot be forced) - image is being used by running container 13dc0f4226dc

最初にコンテナを停止する必要があります:

[email protected]:~$ docker stop 13dc0f4226dc
13dc0f4226dc

問題は、コンテナを停止しても、画像を削除しようとすると文句を言うことです:

[email protected]:~$ docker rmi 67e34c1c9477
Error response from daemon: conflict: unable to delete 67e34c1c9477 (must be forced) - image is being used by stopped container 5ced86b1fcee

ここには2つのオプションがあります:

  • Dockerイメージを強制的に削除します(関連付けられたコンテナーはシステムに残ります)
  • 関連するコンテナを削除してから、Dockerイメージを削除します

Dockerイメージを強制的に削除するには、-fオプションを使用できます:

docker rmi -f image_id

コンテナを削除してから画像を削除するには、次のようなものを使用できます:

docker rm container_id
docker rmi image_id
複数のコンテナーに関連付けられているDockerイメージを削除します

Dockerイメージが1つのコンテナーのみに関連付けられている場合、作業は少し簡単になります。ただし、画像には複数のコンテナが関連付けられている可能性があり、そのようなDocker画像を削除するのは面倒です。

次のようなエラーが表示されます:

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (must be forced) - image is referenced in multiple repositories

まず、(IDではなく)イメージ名に関連付けられているすべてのコンテナを見つける必要があります。

docker ps -a -q --filter ancestor=docker_image_name
  • -オプションは、実行中および停止中のすべてのコンテナを表示します。
  • -qオプションはコンテナIDのみを表示します。

そして、それらすべてを停止する必要があります。コンテナIDを1つずつ使用することもできますが、時間がかかりすぎます。パイプとxargsの魔法を使用して、画像に関連付けられているすべてのコンテナを停止できます:

docker ps -a -q --filter ancestor=ubuntu | xargs docker stop

次に、停止したコンテナを削除するか、(前のセクションで見たように)イメージを強制的に削除することができます。

イメージに関連付けられているすべてのコンテナを削除する場合は、次のコマンドを実行するだけです。

docker ps -a -q --filter ancestor=ubuntu | xargs docker rm

これで、このチュートリアルの前半で示したコマンドを使用して、Dockerイメージを削除できます。

複数のDockerイメージを一度に削除する

1つのコマンドで複数のDockerイメージを削除することもできます。前のコマンドと同じです。画像IDまたは画像名を指定するだけです。

docker rmi image_id_1 image_id_2 image_id_3

もちろん、イメージに関連付けられている実行中のコンテナをすべて停止する必要があります。

未使用のぶら下がっているDockerイメージをすべて一度に削除します

それを見る前に、未使用でぶら下がっている画像が何であるかを説明しましょう:

あらゆる種類のコンテナーが関連付けられている(停止または実行中の)Dockerイメージは、使用済みイメージです。 Dockerイメージにコンテナが関連付けられていない場合、Dockerイメージは未使用のDockerイメージになります。

ぶら下がっているDockerイメージは、「イメージの新しいビルドを作成したが、新しい名前が付けられていないことを意味します。つまり、あなたが持っている古い画像はぶら下がっている画像になります。これらの古い画像はタグが付いておらず、「dockerimages」コマンドを実行すると名前にが表示されます。」

ぶら下がっている画像を削除する場合は、プルーニングオプションを使用できます:

docker image prune

未使用の画像とぶら下がっている画像の両方を一度に削除する場合は、オプション-a:

を使用してプルーニングを使用できます。
docker image prune -a

出力の最後に、解放されたスペースが表示されます。

[email protected]:~$ 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/N] y
Deleted Images:
untagged: ubuntu:latest
untagged: [email protected]:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
untagged: debian:latest
untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb
untagged: fedora:latest
untagged: [email protected]:d4f7df6b691d61af6cee7328f82f1d8afdef63bc38f58516858ae3045083924a
deleted: sha256:f0858ad3febdf45bb2e5501cb459affffacef081f79eaa436085c3b6d9bd46ca
deleted: sha256:2ae3cee18c8ef9e0d448649747dab81c4f1ca2714a8c4550eff49574cab262c9

Total reclaimed space: 308.3MB

pruneコマンドを使用すると、少し賢くなり、古い未使用のぶら下がっている画像のみを削除できます。したがって、24時間以上経過したものを削除する場合は、次のように使用します。

docker image prune -a --filter "until=24h"
システムからすべてのDockerイメージを削除します

おそらく、テスト環境にいて、すべてのDockerイメージを削除して最初からやり直したいと考えています。

すべてのDockerイメージを削除するには、最初に実行中のすべてのコンテナーを停止する必要があります。

docker ps -a -q | xargs docker rm

これで、次の方法ですべての画像を削除できます:

docker images -a -q | xargs docker rmi -f

それでおしまい。 Dockerイメージを削除するには、これで十分な参考資料だと思います。このトピックについては、今すぐ理解しておく必要があります。チュートリアルをチェックして、Dockerコンテナを削除することもできます。

ご質問やご提案がございましたら、下にコメントを残してください。


Docker
  1. Dockerコンテナとは:初心者向け入門ガイド

  2. Dockerイメージの概要

  3. 画像最適化のためのimagemagick

  1. ホスト間でDockerイメージを移動する方法

  2. Dockerイメージを他の人と共有する方法

  3. Dockerロギングの完全な初心者向けガイド

  1. Dockerパート4:カスタムDockerイメージの構築と公開

  2. ビルド済みのDockerイメージ入門

  3. Dockerイメージを変更する方法