Ich kann den toten Container nicht entfernen. Er wird erneut angezeigt, nachdem ich den Docker-Dienst neu gestartet habe.
docker ps -a
CONTAINER ID STATUS
11667ef16239 Dead
Dann
docker rm -f 11667ef16239
Als ich dann den Docker ps -a ausführte, wurden keine Docker-Container angezeigt.
docker ps -a
CONTAINER ID STATUS
Wenn ich jedoch den Docker-Dienst neu starte:
service docker restart
Führen Sie den Docker ps -a erneut aus:
docker ps -a
CONTAINER ID STATUS
11667ef16239 Dead
umount
Antwort ist nicht mehr realisierbar, da das Aufheben der Bereitstellung nicht möglich ist, wenn die Ressource ausgelastet ist. Und in ähnlicher Weise funktioniert es auch nicht, die verantwortliche PID zu töten.Antworten:
Höchstwahrscheinlich ist ein Fehler aufgetreten, als der Dämon versucht hat, den Container zu bereinigen, und er steckt jetzt in diesem "Zombie" -Zustand fest.
Ich fürchte, Ihre einzige Möglichkeit besteht darin, es manuell zu bereinigen:
Wo
<storage_driver>
ist der Name des Fahrers (aufs
,overlay
,btrfs
, oderdevicemapper
).quelle
Tatsächlich haben sich die Dinge heutzutage leicht geändert, um diese toten Container loszuwerden. Sie können versuchen, die Bereitstellung dieser blockierten Dateisysteme aufzuheben, um sie freizugeben
Also, wenn Sie eine Nachricht wie diese erhalten
Führen Sie dies einfach aus
und danach können Sie normalerweise den Behälter entfernen
quelle
docker ps -a
tatsächlich leer war.umount $(grep 'devicemapper' /proc/mounts | awk '{print$2}' | sort -r)
dead
Mit diesem Befehl können Sie auch Container entfernenAber ich bin mir wirklich nicht sicher, warum und wie die
dead
Container erstellt werden. Dieser Fehler scheint mit https://github.com/typesafehub/mesos-spark-integration-tests/issues/34 in Zusammenhang zu stehen, wenn ichdead
Container erhalte[Update] Mit dem Docker 1.13-Update können wir problemlos beide unerwünschten Container entfernen und Bilder baumeln lassen
quelle
docker system prune
tat mehr als erwartet, löste aber das Problem. Wie im OP angegeben,docker rm --force
funktioniert nicht.docker system prune
ist es gefährlich , lesen Sie diesen Kommentar darüber, wie selbst benannte Volumes entfernt werden, wenn mit-a
. Außerdem werden Netzwerke entfernt, was normalerweise nicht das ist, was Sie wollen. Besser zu verwendendocker image prune
unddocker volume prune
in 1.13+.-f
Parameter verlegtBeim Entfernen eines toten Containers (Docker 17.06.1-ce unter CentOS 7) trat der folgende Fehler auf:
So habe ich es behoben:
1. Überprüfen Sie, welche anderen Prozesse ebenfalls Docker-Ressourcen verwenden
$ grep docker /proc/*/mountinfo
was so etwas ausgibt, wobei die Zahl danach die
/proc/
istpid
:2. Überprüfen Sie den Prozessnamen der obigen PID
Also,
nginx
mit pid scheint 12345 auch zu verwenden/var/lib/docker/overlay/...
, weshalb wir den zugehörigen Container nicht entfernen und dendevice or resource busy
Fehler bekommen können. ( Hier finden Sie eine Diskussion darüber, wienginx
derselbe Mount-Namespace mit Docker-Containern geteilt wird, um dessen Löschung zu verhindern.)3. Stoppen Sie
nginx
und dann kann ich den Container erfolgreich entfernen.quelle
Ich habe das gleiche Problem und beide Antworten haben nicht geholfen.
Was mir geholfen hat, ist nur die fehlenden Verzeichnisse zu erstellen und sie zu entfernen:
quelle
Das gewaltsame Entfernen des Behälters hat bei mir funktioniert.
docker rm -f <id_of_the_dead_container>
Anmerkungen :
Beachten Sie, dass dieser Befehl diesen Fehler auslösen kann
Error response from daemon: Driver devicemapper failed to remove root filesystem <id_of_the_dead_container>: Device is Busy
Trotz dieser Meldung sollte die Halterung des Gerätezuordners für tote Container entfernt werden. Das heißt, Sie werden nicht mehr auf diesen Pfad zugreifen:
/var/lib/docker/devicemapper/mnt/<id_of_the_dead_container>
quelle
Versuchte alle oben genannten (kurz vor Neustart / Neustart Docker).
Also hier ist der Fehler om docker rm:
Dann habe ich folgendes gemacht:
Dies ist die PID des fehlerhaften Prozesses, der ihn beschäftigt hält - 20416 (der Punkt nach / proc /
Also habe ich ein ps -p gemacht und zu meiner Überraschung gefunden:
Ein wahrer WTF-Moment. Also habe ich ein mit Google gelöstes Problem gepaart und folgendes gefunden: Dann habe ich dieses https://github.com/docker/for-linux/issues/124 gefunden
Es stellte sich heraus, dass ich den ntp-Daemon neu starten musste und das Problem wurde behoben !!!
quelle
Versuchen Sie, die folgenden Befehle auszuführen. Es funktioniert immer bei mir.
Starten Sie Docker nach Ausführung der obigen Befehle neu,
quelle
dann finde die PID von
656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3and
und töte siequelle
/proc/
ist die pidIch habe die obigen Vorschläge ausprobiert, aber nicht funktioniert.
Dann
docker system prune -a
, es hat beim ersten Mal nicht funktioniertdocker system prune -a
. Diesmal funktioniert es. Es wird eine Warnmeldung gesendet und am Ende gefragt: "Sind Sie sicher, dass Sie fortfahren möchten? J / n? Ans: y. Es wird eine Zeit lang und am Ende sind die toten Container verschwunden.docker ps -a
WICHTIG - Dies ist die nukleare Option, da alle Container + Bilder zerstört werden
quelle
Versuchen Sie dies, es hat bei mir funktioniert:
quelle
für Windows:
Starten Sie dann den Docker Desktop neu
quelle
Versuchen Sie es zu töten und entfernen Sie dann> :) dh
docker kill $(docker ps -q)
quelle
Hier gibt es viele Antworten, aber keine davon betraf die (schnelle) Lösung, die für mich funktioniert hat.
Ich verwende Docker Version 1.12.3, Build 6b644ec.
Ich rannte einfach
docker rmi <image-name>
nach dem Bild, von wo der tote Container kam. EINdocker ps -a
zeigte dann, dass der tote Container vollständig fehlte.Dann habe ich natürlich das Bild erneut gezogen und den Container erneut ausgeführt.
Ich habe keine Ahnung, wie es sich in diesem Zustand befand, aber so ist es ...
quelle
Versuchen Sie, es hat bei mir funktioniert:
quelle
Zum Löschen aller toten Container
docker rm -f $(docker ps --all -q -f status=dead)
Zum Löschen aller verlassenen Container
docker rm -f $(docker ps --all -q -f status=exited)
Wie ich habe
-f
ist notwendigquelle
Unter Centos7 & Docker 1.8.2 konnte ich die Lösung von Zgr3doo nicht verwenden, um per Devicemapper zu mounten (ich glaube, die Antwort war, dass das Volume nicht gemountet / gefunden wurde.)
Ich glaube, ich hatte auch ein ähnliches Problem mit der Antwort von sk8terboi87: Ich glaube, die Meldung lautete, dass die Volumes nicht abgemeldet werden konnten, und listete die spezifischen Volumes auf, die versucht wurden, die Bereitstellung aufzuheben, um die toten Container zu löschen.
Was für mich funktioniert hat, war, Docker zuerst zu stoppen und dann die Verzeichnisse manuell zu löschen. Ich konnte anhand der Fehlerausgabe des vorherigen Befehls feststellen, um welche es sich handelt, um alle toten Container zu löschen.
Entschuldigung für die vagen Beschreibungen oben. Ich fand diese SO-Frage Tage nachdem ich die toten Container gehandhabt hatte. .. Allerdings habe ich heute ein ähnliches Muster bemerkt:
Bei diesem Ansatz ist mir aufgefallen, dass Docker die Bilder mit unterschiedlichen Namen neu erstellt hat:
Dies kann daran liegen, dass der Container immer mit restart = ausgegeben wurde. Die Container-ID stimmt jedoch mit der ID des Containers überein, der zuvor das Volume verwendet hat, das ich zwangsweise gelöscht habe. Es gab keine Schwierigkeiten, diesen neuen Container zu löschen:
quelle
Versuchen Sie dies, es hat bei Centos funktioniert. 1) Docker-Container ls -a gibt Ihnen eine Liste der Container-Überprüfungsstatus, die Sie entfernen möchten. 2) Docker-Container rm -f 97af2da41b2b ist kein großes Fan-Force-Flag, erledigt aber die zu überprüfende Arbeit Es hat funktioniert, einfach den Befehl erneut auslösen oder auflisten. 3) Fahren Sie fort, bis wir alle toten Container geräumt haben
quelle
Der beste Weg, um tote Containerprozesse loszuwerden, besteht darin, Ihren Docker-Dienst neu zu starten. Ich konnte einen Container nicht entfernen, da er im Neustartstatus stecken blieb. Ich habe gerade den Docker-Dienst neu gestartet und es hat bei mir funktioniert.
quelle
In meinem Fall musste ich es mit entfernen
und es hat funktioniert. Vielleicht lösen Sie es so in Docker-Version ~ 19. Meine Docker-Version war
19.03.12
,quelle