Das Bild wird von einem gestoppten Container verwendet

94

Ich versuche, einen Docker-Container mit diesem Befehl zu löschen:

docker rmi <Image-Id>

Offensichtlich habe ich die Bild-ID durch die ID ersetzt, die ich verwende:

docker images

Aber ich sehe den Fehler unten:

Error response from daemon: conflict: unable to delete <Image-ID> (must be forced) - image is being used by stopped container xxxxxxxxxxx
Mehrdad Babaki
quelle

Antworten:

121

Sie können auch das --force , -fEntfernen des Bilds erzwingen verwenden

Wenn Sie das Flag -f verwenden und die kurze oder lange ID des Bildes angeben, hebt dieser Befehl alle Bilder auf und entfernt sie, die mit der angegebenen ID übereinstimmen.

  docker rmi -f <image_id> 
Adiii
quelle
1
Danke, es hat gut funktioniert, aber es gibt ein Problem. Ich habe ein 10-GB-Image gelöscht, aber nach dem Löschen kann ich keine Änderung an meinem freien Speicherplatz feststellen.
Mehrdad Babaki
1
Haben
1
Nicht wirklich, ich bin neu bei Docker. Ich werde das Tool ausprobieren. Wie kann ich über die Befehlszeile die Lautstärke erkennen und entfernen?
Mehrdad Babaki
1
ja Docker Volume ls; Um das Volume aufzulisten und zu entfernen, Docker-Volume rm v_id
Adiii
40

Sie müssen den gestoppten Container mit löschen docker rm, und dann können Sie das Bild löschen, mit dem er verwendet wird docker rmi.

David Maze
quelle
3
Dies ist Teil jeder vollständigen Antwort. Sie können das Entfernen erzwingen oder das gestoppte Bild löschen.
Bmacnaughton
28

Möglicherweise haben Sie auch Container gestoppt, die die Sperre verursachen. Entfernen Sie diese zuerst mit:

docker rm  $(docker ps -q -a)

Hier listen wir die Docker-Prozesse nur anhand der ID auf und entfernen diese dann. Docker rm entfernt jedoch nur gestoppte Container.

Als nächstes gehen Sie zurück und entfernen Sie die Bilder mit:

docker image rm <image_id>
Angus
quelle
22

Sie müssen zuerst den Container entfernen.
Forced ist die letzte Methode.

#check container
docker ps -a

#remove container
docker rm containerID
Hideyasu.T
quelle
3
Ganz klar die beste Antwort. Der einzige, der erklärt, wie man die Liste der gestoppten Container erhält.
Marco
4

Falls docker rmi <image-id>es nicht funktioniert hat, versuchen Sie Folgendes:

Stoppen Sie alle laufenden Container

docker stop $(docker ps -aq)

Entfernen Sie alle Behälter

docker rm $(docker ps -aq)

Entfernen Sie alle Bilder

docker rmi $(docker images -q)
Arilwan
quelle
3

Zusätzlich zu den anderen Antworten hatte ich das gleiche Problem mit Docker für Mac, docker ps -azeigte jedoch keine laufenden Container an. Laufende docker imagesShows:

docker/desktop-storage-provisioner   v1.0                605a0f683b7b        2 months ago        33.1MB
k8s.gcr.io/kube-controller-manager   v1.15.5             1399a72fa1a9        6 months ago        159MB
k8s.gcr.io/kube-proxy                v1.15.5             cbd7f21fec99        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.5             e534b1952a0d        6 months ago        207MB
k8s.gcr.io/kube-scheduler            v1.15.5             fab2dded59dd        6 months ago        81.1MB
docker/kube-compose-controller       v0.4.23             a8c3d87a58e7        11 months ago       35.3MB
docker/kube-compose-api-server       v0.4.23             f3591b2cb223        11 months ago       49.9MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        16 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        17 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

Alle diese Bilder werden von der Docker-App verwendet, wenn Sie Kubernetes aktiviert haben. In den Docker für Mac-Einstellungen gibt es einen Abschnitt für Kubernetes. Wenn Sie auf "Systemcontainer anzeigen (erweitert)" klicken, werden diese in angezeigt docker ps.

Wenn Sie diese Bilder löschen möchten, müssen Sie Kubernetes über die Docker for Mac-App deaktivieren und es erneut versuchen.

Eric
quelle
2

Docker-Container werden über Docker-Images ausgeführt. Sie können ein Image nur löschen, wenn es keinem Container zugeordnet ist.! Sie müssen also den Container stoppen und den Container entfernen, dann können Sie die Image-ID entfernen.

Docker stoppen Container-ID und Docker rm Container-ID

Versuchen Sie dann, die Image-Docker-Rmi-Image-ID zu entfernen

Einige zusätzliche Informationen finden Sie unter dem folgenden Link. Prost.!

https://docs.docker.com/config/pruning/

Surya Kiran
quelle
Dies sollte die richtige Antwort nach dem Vorgang des Stoppcontainers (Docker-Compose-Stopp) sein -> Container entfernen (Docker rm <Name des Containers>) -> zugehörige Bilder entfernen (Docker rmi <Bild-ID>).
kta
1

Wenn das Ziel darin besteht, Speicherplatz zurückzugewinnen, ist ein anderer Ansatz, der noch nicht erwähnt wurde, die Verwendung docker system prune. Es wird eine Warnung ausgegeben, die beachtet werden sollte:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Dadurch werden benannte Bilder nicht gelöscht, aber unbenannte Zwischenbilder werden gelöscht. Abhängig von der Größe der von Ihnen verwendeten Container kann dadurch eine erhebliche Menge an Speicherplatz eingespart werden.

Edward
quelle
0

Wenn Sie das geändert haben Dockerfileund Docker Compose verwenden, können Sie Ihr Image einfach neu erstellen, indem Sie es docker-compose mit der --buildOption ausführen !

ans1genie
quelle
Wenn Sie Änderungen am Dockerfilevorgenommen haben, sollten Sie das Bild nicht selbst entfernen. Verwenden Sie einfach das Flag --buildmit, docker-composedamit ein neues Bild mit den Änderungen neu erstellt wird
ans1genie