ローカルドッカーレジストリ を作成し、ドッカーハブからドッカーイメージの一部を取得して、ローカルレジストリにプッシュします。次に、ローカルイメージを削除します。しかし、ここでの問題は、画像の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
を実行すると、両方が削除されるため、再度プルする必要があります。これを行う方法を次に示します。次のコマンドを実行します。
docker images | grep 810001cb03af | awk '{print $1 ":" $2}' | xargs docker rmi
ここで、810001cb03af
は画像IDです。
ここに一つの方法があります:
イメージIDが同じ場合、リポジトリとタグのデータを「docker rmi」コマンドに提供して、イメージを削除できます。
コマンド
docker rmi [repository_name1]:[tag1] [repository_name2]:[tag2]
例
docker rmi test-nginx:latest ubuntu:latest
注:質問に記載されている要件に対して上記のコマンドを効果的に使用するには、画像に適切な名前を付けてタグを付ける必要があります。
「docker rmi」コマンドのヘルプについては、Dockerドキュメントを参照してください: here
このシナリオは 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つの画像です(つまり、複数の名前/タグが与えられます)
次のコマンドを実行して、同じIMAGE IDを持つ複数のdockerイメージを削除します。
Sudo docker rmi -f **IMAGE ID**
コマンドdocker rmi IMAGE_NAME:TAG_NAMEを使用すると、機能します。
ダイジェストを使用して画像を削除してみてください。
$ 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
Dockerのドキュメントをチェックしたところ、これもできると思います
rmi
短いまたは長いID、タグ、またはダイジェストを使用して画像を削除できます。画像に1つ以上のタグまたはダイジェスト参照がある場合、画像を削除する前にそれらをすべて削除する必要があります。
したがって、ID uを使用するのではなく、次のようなことができます---
$ docker rmi test1 Untagged: test1:latest $ docker rmi test2 Untagged: test2:latest