web-dev-qa-db-ja.com

同じimageIDの複数のdocker画像を削除する方法は?

ローカルドッカーレジストリ を作成し、ドッカーハブからドッカーイメージの一部を取得して、ローカルレジストリにプッシュします。次に、ローカルイメージを削除します。しかし、ここでの問題は、画像のimageIDが同じであり、それらを削除できないことです。解決策を検索しましたが、解決策が見つかりませんでした。

>> docker images

REPOSITORY                     TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
localhost:5000/[repo1]        v-0.9.1              810001cb03af        4 weeks ago         594.6 MB
[myaccount]/[repo1]           v-0.9.1              810001cb03af        4 weeks ago         594.6 MB

ご覧のとおり、image IDは両方の画像で同じです。どうすれば削除できますか?

[〜#〜] edit [〜#〜]

  • 私のドッカーバージョン:

    Docker version 1.8.2, build 0a8c2e3

  • docker rmi 810001cb03afの出力:

    デーモンからのエラー応答:競合、複数のリポジトリでタグ付けされているためイメージ810001cb03afを削除できません。-fを使用して強制的にエラー:イメージの削除に失敗しました:[810001cb03af]

  • docker rmi -f 81000を実行すると、両方が削除されるため、再度プルする必要があります。
31
Hadi

これを行う方法を次に示します。次のコマンドを実行します。

docker images | grep 810001cb03af | awk '{print $1 ":" $2}' | xargs docker rmi

ここで、810001cb03afは画像IDです。

48
user2707671

ここに一つの方法があります:

イメージIDが同じ場合、リポジトリとタグのデータを「docker rmi」コマンドに提供して、イメージを削除できます。

コマンド

docker rmi [repository_name1]:[tag1] [repository_name2]:[tag2]

docker rmi test-nginx:latest ubuntu:latest

注:質問に記載されている要件に対して上記のコマンドを効果的に使用するには、画像に適切な名前を付けてタグを付ける必要があります。

「docker rmi」コマンドのヘルプについては、Dockerドキュメントを参照してください: here

23
spectre007

このシナリオは rmiコマンドのドキュメント で正確に説明されています

短いまたは長いID、タグ、またはダイジェストを使用して画像を削除できます。画像にそれを参照する1つ以上のタグがある場合、画像を削除する前にそれらをすべて削除する必要があります。タグによって画像が削除されると、ダイジェスト参照は自動的に削除されます。

与えられた、

$ docker images

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
test1                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
test2                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)

タグを削除することもできます(最後のタグは実際に画像も削除します):

$ docker rmi test1

Untagged: test1:latest

$ docker rmi test2

Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

または、強制的に:

$ docker rmi -f fd484f19954f

Untagged: test1:latest
Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

注:これらは同じIDの複数の画像ではありません。これは実際には複数のリポジトリで参照される1つの画像です(つまり、複数の名前/タグが与えられます)

11

次のコマンドを実行して、同じIMAGE IDを持つ複数のdockerイメージを削除します。

Sudo docker rmi -f **IMAGE ID**
7
Murali Krishna

コマンドdocker rmi IMAGE_NAME:TAG_NAMEを使用すると、機能します。

1
Udit Gandhi

ダイジェストを使用して画像を削除してみてください。

    $ docker images --digests

    REPOSITORY                     TAG       DIGEST                                                                    IMAGE ID        CREATED         SIZE
    localhost:5000/test/busybox    <none>    sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf   4986bf8c1536

    $ docker rmi localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
     Untagged: localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf

    Deleted: 4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8125
    Deleted: ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2
    Deleted: df7546f9f060a2268024c8a230d8639878585defcc1bc6f79d2728a13957871b
0
Sohan

Dockerのドキュメントをチェックしたところ、これもできると思います

rmi

短いまたは長いID、タグ、またはダイジェストを使用して画像を削除できます。画像に1つ以上のタグまたはダイジェスト参照がある場合、画像を削除する前にそれらをすべて削除する必要があります。

したがって、ID uを使用するのではなく、次のようなことができます---

$ docker rmi test1 Untagged: test1:latest $ docker rmi test2 Untagged: test2:latest

0
Chetan Sharma