Ich führe Docker unter Vagrant unter OS X 10.8.4 (Mountain Lion) aus. Wenn ich versuche, ein gespeichertes Bild zu löschen, wird folgende Fehlermeldung angezeigt:
$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input
Laut der rmi
Hilfe ist die richtige Syntax docker rmi IMAGE [IMAGE...]
, und ich bin mir nicht sicher, was ich davon halten soll.
Wie kann ich ein Bild löschen?
$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1
$docker info
Containers: 1
Images: 3
Interessanterweise werden beim Laufen überhaupt docker ps
keine Container angezeigt. Laufen docker images
zeigt vier (4) base
Bilder und ein (1) node
Bild.
docker info
Zeigt die tatsächliche Anzahl der Bilder an. Sie können versuchen./docker images -a -q | sort | uniq | wc -l
, dass das gleiche Ergebnis erzielt werden soll (-a für alle Bilder, -q nur für IDs).docker ps
zeigt nur aktive Container, können Sie tun,docker ps -a
um alle Container-D
Option und dem Client zu starten ?docker -d -D& ; docker -D rmi <id>
. Kannst du es auch versuchenCID=$(docker run -d ubuntu bash); ID=$(docker commit $CID); docker rmi $ID
?Antworten:
Versuchen Sie es
docker rmi node
. Das sollte funktionieren.Das Anzeigen aller erstellten Container ist so einfach wie
docker ps -a
.Um alle vorhandenen Container (keine Bilder!) Zu entfernen, führen Sie
docker rm $(docker ps -aq)
quelle
docker ps -aq | Foreach-Object { docker stop $_; docker rm $_; }
Im Folgenden finden Sie einige Möglichkeiten zum Entfernen von Docker-Images / -Containern:
Einzelbild entfernen
Entfernen Sie alle Bilder
Töte Behälter und entferne sie:
Hinweis: Ersetzen Sie
kill
durchstop
für ein ordnungsgemäßes HerunterfahrenEntfernen Sie alle Bilder außer "Mein-Bild"
Verwenden Sie grep, um alle außer
my-image
und zu entfernenubuntu
Oder (ohne awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
quelle
docker rmi $(docker images -qf "dangling=true")
docker rm $(docker kill $(docker ps -a -q))
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
Löschen Sie alle Docker-Container
Löschen Sie alle Docker-Bilder
quelle
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
sudo docker rmi -f $(sudo docker images | grep "<none>" | awk "{print \$3}")
und dann, um Live-Release-Tags von 2015 (zBlive-20150121223
) zu entfernen, können wir tunsudo docker rmi -f $(sudo docker images | grep live-2015 | awk "{print \$3}")
So entfernen Sie ein Bild mithilfe der Bild-ID aus Docker:
Holen Sie sich die Liste aller Bilder
Identifizieren Sie die Bild-ID des Bildes, das Sie löschen möchten, zum Beispiel:
Entfernen Sie das Bild schließlich mit der Bild-ID (nur die ersten drei Ziffern sind erforderlich).
quelle
Bild:
Container:
quelle
Update, wie von VonC unter Entfernen alter Docker-Container kommentiert .
Mit Docker 1.13 (4. Quartal 2016) haben Sie jetzt:
docker system prune
löscht ALLE nicht verwendeten Daten (dh in der Reihenfolge: Container gestoppt, Volumes ohne Container und Bilder ohne Container).Siehe PR 26108 und Commit 86de7c0 , in denen einige neue Befehle eingeführt werden, um die Visualisierung des Speicherplatzes der Docker-Daemon-Daten auf der Festplatte zu vereinfachen und das "Bereinigen" nicht benötigter "Überschüsse zu vereinfachen.
quelle
Behälter entfernen
So entfernen Sie einen bestimmten Behälter
Für Einzelbild
Für mehrere Bilder
Verlassene Behälter entfernen
Entfernen Sie alle Behälter
Bilder entfernen
Entfernen Sie bestimmte Bilder
für Einzelbild
für mehrere Bilder
Baumelnde Bilder entfernen
Baumelnde Bilder sind Ebenen, die keine Beziehung zu markierten Bildern haben, da die Docker-Bilder aus mehreren Bildern bestehen.
Entfernen Sie alle Docker-Images
Volumes entfernen
Führen Sie zum Auflisten von Volumes aus
docker volume ls
Entfernen Sie ein bestimmtes Volume
Entfernen Sie baumelnde Volumes
Entfernen Sie einen Behälter und seine Volumina
quelle
CONTAINER_ID
?docker rm container_name
docker rmi image_name
quelle
Container-ID suchen,
quelle
daf644660736
? Wie hängt das mit einem der vorherigen zusammen?Zunächst müssen wir die Docker-Container stoppen und entfernen, die mit dem Docker-Image verbunden sind, das wir entfernen möchten.
Also zuerst dafür
docker stop container-id
- Um den laufenden Container zu stoppendocker rm container-id
- Zum Löschen / Entfernen des Containersdann,
docker rmi image-id
- Zum Löschen / Entfernen des Bildesquelle
Für Versionen 1.13 und höher:
Vergleichen:
docker image rm
unddocker rmi
,die
[OPTIONS]
scheinen keinen unterschied zu haben.Von: Einführung in Docker 1.13
quelle
Docker bietet einen Befehl zum Entfernen
images
.Beispiel:
Sie können diese Filterbilder also wie folgt löschen:
quelle
Löschen Sie alle mit
Schritt 1: Töte alle Container
Schritt 2: RM sie zuerst
Schritt 3: Löschen Sie die Bilder mit Gewalt
Verwenden Sie Schritt 1, falls Sie eine Fehlermeldung erhalten, dass er aufgrund von untergeordneten Abhängigkeiten nicht gelöscht werden kann
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 Image herunterladen
meltwater/docker-cleanup
.Ich verwende dies in der Produktion, da wir mehrmals täglich auf mehreren Servern bereitstellen, und ich möchte nicht zu jedem Server gehen, um aufzuräumen (das wäre schmerzhaft).
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
Hier ist ein Shell-Skript zum Entfernen eines getaggten (benannten) Bildes und seiner Container. Speichern Sie als docker-rmi und führen Sie es mit 'docker-rmi my-image-name' aus.
quelle
xargs -r
dafür sorgen, dass es im Fall eines nicht passenden Containers funktioniert.Warum niemand erwähnt
docker-compose
! Ich benutze es erst seit einer Woche und kann ohne es nicht überleben. Alles, was Sie brauchen, ist ein yml zu schreiben, das nur einige Minuten dauert, und dann können Sie loslegen. Es kann Images und Container booten (die in sogenannten Diensten benötigt werden) und Sie können Protokolle überprüfen, genau wie Sie es mit nativen Docker-Befehlen verwenden. Probieren Sie es aus:Bevor ich Docker-Compose verwendete, schrieb ich mein eigenes Shell-Skript und musste das Skript bei Bedarf anpassen, insbesondere wenn sich die Anwendungsarchitektur änderte. Jetzt muss ich das dank Docker-Compose nicht mehr tun.
quelle
docker-compose
ist ein Orchestrierungswerkzeug und oft unpraktisch für die Verwendung in einfachen Projekten. Im Rahmen dieser Frage ist eine eigenständigedocker
Lösungdocker-compose.yml
vorzuziehen (die nicht die Verwendung häufig finnicky Konfigurationen erfordert). Darüber hinaus gibt es hier bereits viele, viele gute Antworten.Für mich hat folgendes gut funktioniert:
Entfernen Sie dann ein Bild, indem Sie Folgendes ausführen:
quelle
Bilder auflisten:
Bilder löschen:
Mit Gewalt löschen:
quelle
In meinem Fall besteht das Problem darin, dass ich zwei Bilder mit demselben Namen habe. Die Lösung besteht darin, das Tag nach dem Namen oder der ID hinzuzufügen
Ex:
quelle