Lösung für das Problem, dass Docker Containerdienste nicht stoppen oder löschen kann

Lösung für das Problem, dass Docker Containerdienste nicht stoppen oder löschen kann

Vorwort

Heute habe ich von einem Entwickler die Rückmeldung bekommen, dass ein Container-Dienst nicht gestoppt, rm (docker rm -f) oder beendet werden kann. Mit anderen Worten: Der Container-Dienst lässt sich nicht beenden.

Verfahren

(1) Das Docker-Verzeichnis kann nicht durch Ausführen des Löschbefehls gelöscht werden:

# ll /var/lib/docker/containers | grep caf8ef20f3c1
# cd /var/lib/docker/containers 
# rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8

Zu diesem Zeitpunkt erhalten wir eine Fehlermeldung wie diese:

rm: „/var/lib/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/secrets“ kann nicht entfernt werden: das Gerät oder die Ressource ist belegt

„/var/lib/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/shm“ kann nicht gelöscht werden: Gerät oder Ressource belegt

(2) Aus dem obigen Fehler können wir ersehen, dass die gemeinsam genutzten Mounts „secrets“ und „shm“ nicht gelöscht werden können. Suchen Sie zuerst den Mount-Speicherort, brechen Sie dann das Mounten ab und löschen Sie es dann:

# cat /proc/mounts |grep "docker" |grep "caf8ef20f3c1"

(3) Aushängen:

# umount /data/sys/var/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/secrets
# umount /data/sys/var/docker/containers/caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8/shm

(4) Überprüfen Sie noch einmal:

# cat /proc/mounts |grep "docker" |grep "caf8ef20f3c1" // existiert nicht mehr

(5) Löschen Sie nun das Docker-Verzeichnis:

# cd /var/lib/docker/containers 
# rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8

(6) Containerdienst löschen

Nun verwenden wir rm oder kill um den Containerdienst zu entfernen:

# docker rm -f caf8ef20f3c1c

oder

# docker kill --signal=SIGINT caf8ef20f3c1

Wenn der obige Befehl nach der Ausführung hängen bleibt, starten Sie den Docker-Dienst neu:

# systemctl Neustart Docker

Nachdem Sie die oben genannten Schritte ausgeführt haben, kann das aufgetretene Problem grundsätzlich gelöst werden ~

Ergänzung: Docker-Container können nicht gestoppt oder beendet werden

Problemprozess

Ein MySQL-Container in einer bestimmten Umgebung kann nicht gestoppt, beendet oder rm

sudo docker ps | grep mysql, um den Container anzuzeigen

7844250860f8 mysql:5.7.22 "/.r/r docker-entr..." vor 41 Minuten Up 8 Minuten r-dlrel-mysql-1-66df8f33

Nach der Verwendung von Docker Stop / Docker Kill / Docker RM -f und anderen Befehlen wird der Container automatisch sofort neu gestartet

Überprüfen Sie den Container sofort. Die Laufzeit beträgt: Weniger als eine Sekunde, was darauf hinweist, dass der Container sofort gestartet wurde.

7844250860f8 mysql:5.7.22 "/.r/r docker-entr..." vor 42 Minuten Aktiv Weniger als eine Sekunde r-dlrel-mysql-1-66df8f33

Beenden Sie den physischen Prozess, der dem Container entspricht, und starten Sie ihn automatisch neu.

So erhalten Sie den physischen Prozess: 1. Das Feld State.Pid in Docker Inspect ist die physische Prozess-ID. 2. ps-Befehl

Überprüfen Sie die Neustartrichtlinie für den Container. Die Richtlinie lautet „Nein“, was bedeutet, dass kein automatischer Neustart erfolgt.

Wenn Sie die Neustartrichtlinie eines laufenden Containers aktualisieren müssen, können Sie diesen Befehl verwenden: docker update –restart=no my-container

"Neustartrichtlinie": {
  "Name": "nein",
  "MaximumRetryCount": 0
},

Die magische Art und Weise, wie Programmierer Probleme lösen

Ist Ihnen dieses Szenario schon einmal begegnet:

Ein Problem verwirrte mich, doch als ich vor meinen Kollegen trat und ihm das Problem deutlich erklärte, verstand ich es plötzlich.

Das Problem war offensichtlich sehr einfach, aber beim Ausführen des Programms trat ein Problem auf. Dann bat ich einen Kollegen, mir bei der Überprüfung der Grundkonfiguration zu helfen, und plötzlich wurde mir die Antwort klar.

Diesmal gehöre ich zum ersten Typ. Sobald ich die Frage zu Ende gestellt hatte, fiel mir sofort ein: Verdammt, es war das Container-Orchestrierungstool Rancher, das die Planung durchführte, und der Container wurde nach seinem Absturz automatisch neu gestartet.

Ich habe mich bei Rancher angemeldet und gesehen, dass dies tatsächlich der Fall war, ein „falsches“ Problem. Obwohl dies diesmal kein Problem ist, besteht bei Docker das Problem, dass es nicht angehalten werden kann, und es gibt viele Informationen dazu.

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Lösung für den Docker-Container, der nicht gestoppt und gelöscht werden kann
  • Docker stop stoppt/remove löscht alle Container
  • So löschen Sie gestoppte Container in Docker stapelweise

<<:  So implementieren Sie die Vue-Bindungsklasse und den Inline-Bindungsstil

>>:  HTML-Codeanalyse der Textkonvertierungseffekte bei Links- und Rechtsbewegungen

Artikel empfehlen

Beispielcode der Uniapp Vue- und NVUE-Karussellkomponenten

Der Vue-Teil ist wie folgt: <Vorlage> <K...

Detaillierte Schritte zur Installation von Docker in 5 Minuten

Für die Installation von Docker auf CentOS muss d...

Beispiel zum Festlegen der pseudostatischen WordPress-Eigenschaft in Nginx

Zitat aus Baidus Erklärung zu Pseudostatik: Pseud...

Optimierung der Frontend-Leistung von Websites: JavaScript und CSS

Ich habe einen Artikel des Yahoo-Teams über die O...

Vue implementiert die Frage-Antwort-Funktion

1. Schnittstelle für die Anforderung einer Antwor...

Die Auswirkungen des Limits auf die Abfrageleistung in MySQL

I. Einleitung Lassen Sie mich zunächst die MySQL-...

So aktivieren Sie das Root-Konto in Ubuntu 20.04

Nach der Installation von Ubuntu 20.04 gibt es st...

Tutorial zur Installation und Konfiguration von MySQL 5.7 unter CentOS7 (YUM)

Installationsumgebung: CentOS7 64-Bit, MySQL5.7 1...

Fallstudie zu JavaScript-Ereignisschleifen

Ereignisschleife in js Da JavaScript ein Single-T...

Mehr als 100 Zeilen Code zur Implementierung von React Drag Hooks

Vorwort Der Quellcode umfasst insgesamt nur mehr ...