Ich habe die folgenden Bilder:
alex@alexvps:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 70c0e19168cf 5 days ago 1.069 GB
<none> <none> c2ce80b62174 8 days ago 399.2 MB
<none> <none> 60afe4036d97 8 days ago 325.1 MB
und wenn ich versuche, einen von ihnen zu entfernen, bekomme ich:
alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images
Wie kann ich sie entfernen? Warum gibt es solche Konflikte?
docker images -q | %{docker rmi -f $_}
sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
docker ps -a -q | %{docker rm -f $_}
docker system prune
. Also, um alles abzuwischen: Umdocker kill $(docker ps -q)
Container zu stoppen, gefolgt von einem,docker system prune -a
wird alles entfernt - siehe stackoverflow.com/a/44309011/247708Möglicher Grund: Der Grund kann sein, dass dieses Image derzeit von einem laufenden Container verwendet wird. In diesem Fall können Sie laufende Container auflisten, den entsprechenden Container stoppen und dann das Image entfernen:
Wenn Sie den Container von Docker ps nicht finden können, können Sie damit alle bereits verlassenen Container auflisten und entfernen.
Hinweis: Achten Sie darauf, alle verlassenen Container auf einmal zu löschen, falls Sie
Volume-Only
Container verwenden. Diese bleiben imExit
Zustand, enthalten aber nützliche Daten .quelle
sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm
(dank github.com/dotcloud/docker/issues/3258 ) und dann mitsudo docker rmi 70c0e19168cf
Exit
Status zu löschen . Wenn Sie nur Container mit Datenvolumen verwenden, werden diese nicht weiter ausgeführt.awk '/Exit/ {print $1}'
Error response from daemon: No such container: ...
. Es ist schwer zu sagen, was ersetzt werden muss und durch was ich ersetzen soll. Nicht benutzen...
Der Grund für den Fehler ist, dass, obwohl das Bild kein Tag hatte, immer noch ein Container auf diesem Bild erstellt wurde, der sich möglicherweise im
exited
Status befindet. Sie müssen also sicherstellen, dass Sie alle auf diesen Bildern erstellten Container angehalten und gelöscht haben. Der folgende Befehl hilft Ihnen beim Entfernen aller Container, die nicht ausgeführt werden:Dies entfernt nun alle baumelnden Nicht-Zwischenbilder
<none>
:quelle
Das Bild kann derzeit von einem laufenden Container verwendet werden. Sie müssen also zuerst die Container anhalten und entfernen.
Dann könnten Sie versuchen, das Bild zu löschen:
Sie müssen sicher sein, dass dieses Bild nicht von anderen Bildern abhängt (andernfalls müssen Sie sie zuerst löschen).
Ich hatte einen seltsamen Fall, in dem ich keine Container mehr am Leben hatte (
docker ps -a
nichts zurückgegeben), aber ich konnte das Bild und seine Bildabhängigkeit nicht löschen.Um diese Sonderfälle zu lösen, können Sie die Bildentfernung folgendermaßen erzwingen:
quelle
In Bash:
Dadurch werden alle Bilder mit dem Namen "<keine>" entfernt. Ich fand diese Bilder überflüssig.
quelle
docker images|grep \<none\>|awk '{print $3}' | xargs docker rmi
, es kann einesudo
Erlaubnis erfordernIch habe die Antwort in diesem Befehl gefunden:
Ich hatte Ihr Problem, als ich einige Bilder löschte, die verwendet wurden, und ich habe es nicht bemerkt (mit
docker ps -a
).quelle
Seit Docker ver. 1.13.0 (Januar 2017) gibt es den
system prune
Befehl:quelle
Zusätzlich zu Sunnys Antwort:
Gehen Sie folgendermaßen vor, um alle Bilder auf einem Windows-Computer (mit Docker für Windows) in einem PowerShell-Fenster zu löschen :
Gehen Sie folgendermaßen vor, um alle Container auf einem Windows-Computer (mit Docker für Windows) in einem PowerShell-Fenster zu löschen :
quelle
Entfernen Sie zunächst alle Container mit dem folgenden Befehl
Entfernen Sie dann das Bild anhand seiner ID mit dem folgenden Befehl
quelle
Sie müssen zuerst alle unnötigen Container stoppen / löschen, die auf diesen Bildern erstellt wurden.
Schauen Sie sich an: So entfernen Sie alte Docker-Container .
Verwenden Sie danach die @ marcell-Lösung.
quelle
Entfernen Sie alle Behälter
Erzwingen Sie das Entfernen aller Docker-Images
quelle
Sie können einfach
--force
am Ende des Befehls hinzufügen . Mögen:Um es intelligenter zu machen, können Sie Folgendes hinzufügen:
Hier in
docker ps
$ 1 befindet sich die erste Spalte, dh die Docker-Container-ID.Und
docker images
$ 3 ist die dritte Spalte, dh die Docker-Image-ID.quelle
Die kompakteste Version eines Befehls zum Entfernen aller Bilder ohne Tags ist:
quelle
Um ein Docker-Image zu löschen, müssen Sie den folgenden Befehl ausführen:
Um alle Docker-Images zu löschen, können Sie den folgenden Befehl ausführen:
Wenn Sie nun alle Docker-Bilder löschen möchten (einschließlich der verwendeten Bilder), können Sie das Flag hinzufügen
-f
, zum Beispiel:quelle
Verwenden
oder
Entfernen Sie alle baumelnden Bilder. Wenn
-a
angegeben, werden auch alle Bilder entfernt, auf die von keinem Container verwiesen wird.Hinweis: Sie werden zur Bestätigung aufgefordert, bevor die Bereinigung etwas entfernt. Es wird jedoch keine Liste der möglicherweise entfernten Elemente angezeigt. Zusätzlich,
docker image ls
die Negativfilterung nicht unterstützt, sodass es schwierig ist, vorherzusagen, welche Bilder tatsächlich entfernt werden.Wie in der Docker-Dokumentation zum Beschneiden angegeben .
quelle
Wenn Sie verlassene Container automatisch / regelmäßig bereinigen und Images und Volumes entfernen möchten, die nicht von einem laufenden Container verwendet werden, können Sie das Docker-Image herunterladen
meltwater/docker-cleanup
.Auf diese Weise müssen Sie es nicht von Hand aufräumen.
Renn einfach:
Es wird alle 30 Minuten ausgeführt (oder wie lange Sie es mit der Option DELAY_TIME = 1800 einstellen) und bereinigte Container und Bilder bereinigen.
Weitere Details: https://github.com/meltwater/docker-cleanup/blob/master/README.md
quelle
Ich habe mit dem Powershell-Skript eine Lösung gefunden, die dies für mich erledigt.
Das Skript stoppt zunächst alle Container, dann entfernt es alle Container und entfernt dann vom Benutzer benannte Bilder.
Schauen Sie hier http://www.devcode4.com/article/powershell-remove-docker-containers-and-images
quelle