Ich habe eine local docker-Registrierung erstellt und dann einige meiner Docker-Images vom Docker-Hub gezogen und dann in die lokale Registry verschoben. Jetzt möchte ich meine lokalen Bilder entfernen. Das Problem hierbei ist jedoch, dass imageID
der Bilder gleich sind und ich sie nicht entfernen kann. Ich habe nach der Lösung gesucht, konnte aber keine Lösung finden.
>> 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
wie Sie sehen, ist der image ID
für beide Bilder gleich. Wie kann ich sie entfernen?
EDIT
meine Docker-Version:
Docker version 1.8.2, build 0a8c2e3
ausgabe von docker rmi 810001cb03af
:
Fehlerantwort vom Daemon: Konflikt, Bild 810001cb03af kann nicht gelöscht werden, da es in mehreren Repositorys markiert ist. Verwenden Sie -f, um den Fehler zu erzwingen.
docker rmi -f 81000
tue, werden beide entfernt, und ich muss erneut ziehen.Hier können Sie dies tun. Führen Sie den Befehl aus:
docker images | grep 810001cb03af | awk '{print $1 ":" $2}' | xargs docker rmi
dabei ist 810001cb03af
Ihre Bild-ID.
Hier ist ein Weg:
Repository- und Tag-Daten können dem Befehl "docker rmi" zur Verfügung gestellt werden, um das Bild zu entfernen, wenn die Bild-ID identisch ist.
befehl
docker rmi [repository_name1]:[tag1] [repository_name2]:[tag2]
beispiel
docker rmi test-nginx:latest ubuntu:latest
Hinweis: Sie müssen das Bild entsprechend benennen und mit einem Tag versehen, um den obigen Befehl effektiv für die in der Frage genannte Anforderung zu verwenden.
Hilfe für Docker-Dokumente zur "docker rmi" -Befehlshilfe: hier
Führen Sie den folgenden Befehl aus, um mehrere Docker-Images mit derselben IMAGE ID zu entfernen.
Sudo docker rmi -f **IMAGE ID**
Dieses Szenario wird genau beschrieben in rmi Befehlsdokumentation
Sie können ein Bild mit seiner kurzen oder langen ID, seinem Tag oder seiner Übersicht entfernen. Wenn ein Bild mit einem oder mehreren Tags versehen ist, müssen Sie alle entfernen, bevor das Bild entfernt wird. Digest-Referenzen werden automatisch entfernt, wenn ein Bild nach Tag entfernt wird.
Gegeben,
$ 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)
Sie können entweder Tags entfernen (das letzte Tag wird tatsächlich auch das Bild entfernen):
$ docker rmi test1
Untagged: test1:latest
$ docker rmi test2
Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8
Oder erzwinge es:
$ docker rmi -f fd484f19954f
Untagged: test1:latest
Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8
Hinweis: Hierbei handelt es sich nicht um mehrere Bilder mit derselben ID. Dies ist tatsächlich ein Bild, auf das in mehreren Repositorys verwiesen wird (d. H. Mehrere Namen/Tags erhalten).
Sie können den Befehl docker rmi IMAGE_NAME: TAG_NAME verwenden, und es funktioniert.
Sie sollten versuchen, Bilder mit Digest zu entfernen.
$ docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
localhost:5000/test/busybox <none> sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf 4986bf8c1536
$ docker rmi localhost:5000/test/[email protected]:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
Untagged: localhost:5000/test/[email protected]:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
Deleted: 4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8125
Deleted: ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2
Deleted: df7546f9f060a2268024c8a230d8639878585defcc1bc6f79d2728a13957871b
Ich habe gerade in den Docker-Dokumenten nachgesehen und ich denke, das ist auch etwas, was man tun kann
rmi
Sie können ein Bild mit seiner kurzen oder langen ID, seinem Tag oder seiner Übersicht entfernen. Wenn ein Bild über einen Tag oder einen Digest-Verweis verfügt, müssen Sie alle entfernen, bevor das Bild entfernt wird.
also anstatt ID zu verwenden, kann man so etwas tun ---
$ docker rmi test1
Untagged: test1:latest
$ docker rmi test2
Untagged: test2:latest