Lösung für das Problem, dass Docker-Container nicht gestoppt oder beendet werden können

Lösung für das Problem, dass Docker-Container nicht gestoppt oder beendet werden können

Docker-Version 1.13.1

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.

Weiterführende Literatur: Docker-Neustartrichtlinie

Während des Lösungsprozesses habe ich viel über Docker-Neustartrichtlinien und -Fehler gelernt. Dieser Artikel ist leicht verständlich: Sicherstellen, dass Container mit der Neustartrichtlinie von Docker immer ausgeführt werden

Hier machen wir einfach eine Aufzeichnung und lernen die vier Neustartrichtlinien von Docker kennen.

NEIN

Nein ist die Standardrichtlinie und der Container wird unter keinen Umständen neu gestartet.

bei Ausfall

Bei einem Fehler wird ein Neustart durchgeführt, wenn der Container-Exitcode abnormal ist. Wenn der Container-Exitcode normal ist, wird keine Verarbeitung durchgeführt.

sudo docker run -d --name Test-Neustarts --restart bei Fehler:5 Test-Neustarts
85ff2f096bac9965a9b8cffbb73c1642bf7b64a2173bbd145961231861b95819

on-failure[:max-retries], max-retries gibt die maximale Anzahl von Neustarts an.

Der Vorteil der On-Failure-Funktion besteht darin, dass der Container nicht neu gestartet wird, wenn er mit einem normalen Exitcode beendet wird.

stets

Unabhängig vom Exitcode des Containers wird dieser automatisch neu gestartet. Hier sind einige Szenarien:

  1. Der Container wird mit einem abnormalen Statuscode beendet (z. B. wenn die Anwendung aufgrund von unzureichendem Speicher beendet wird).
  2. Der Container wird normal gestoppt und dann die Maschine neu gestartet oder der Docker-Dienst neu gestartet
  3. Der Container läuft nach dem Absturz normal und dann wird die Maschine neu gestartet oder der Docker-Dienst neu gestartet

In den oben genannten Fällen wird der Container immer neu gestartet. Wenn jedoch die Richtlinien „Bei Fehler“ und „Keine Richtlinien“ verwendet werden, wird der Container nach dem Neustart der Maschine nicht neu gestartet.

sofern nicht gestoppt

„Unless-stopped“ ist grundsätzlich dasselbe wie immer, mit Ausnahme eines Szenarios, in dem „unless-stopped“ etwas Besonderes ist:

Wenn der Container normal gestoppt wird und dann die Maschine neu gestartet wird oder der Docker-Dienst neu gestartet wird, wird der Container in diesem Fall nicht neu gestartet

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Lösung für das Problem, dass der Docker-Container nicht gestoppt werden kann

<<:  Vue implementiert das Hinzufügen, Anzeigen und Löschen mehrerer Bilder

>>:  Das Vue-Cropper-Plugin realisiert die Kapselung der Bildaufnahme- und Upload-Komponente

Artikel empfehlen

Die am häufigsten verwendete HTML-Escape-Sequenz

In HTML haben <, >, & usw. eine speziell...

Tutorial zur Verwendung von Docker Compose zum Erstellen von Confluence

Dieser Artikel verwendet die Lizenzvereinbarung „...

Ändern des Standard-Bildlaufleistenstils im Front-End-Projekt (Zusammenfassung)

Ich habe viele Projekte geschrieben, bei denen de...

Beispieloperation MySQL Kurzlink

So richten Sie einen MySQL-Kurzlink ein 1. Überpr...

Detailliertes Tutorial zur Installation von mysql8.0 mit dem Linux-Befehl yum

1. Reinigen Sie vor der Installation gründlich rp...

Analyse der MySql CURRENT_TIMESTAMP-Funktion anhand eines Beispiels

Beim Erstellen eines Zeitfelds STANDARD CURRENT_T...

JavaScript zum Erzielen von Feuerwerkseffekten (objektorientiert)

In diesem Artikel wird der spezifische Code für J...

Lösung für das Problem mit verstümmelten chinesischen MySQL-Zeichen

1. Die chinesischen verstümmelten Zeichen erschei...

Nicht alle Pop-ups sind betrügerisch. Tipps zum Entwerfen von Website-Pop-ups

Popup-Nachrichten sind bei inländischen Internetd...

Beispiel für einen SQL-Seriennummernerfassungscode

In diesem Artikel wird hauptsächlich das Beispiel...

Detailliertes Beispiel des Kettenprogrammierstils von jQuery

Das Implementierungsprinzip der Kettenprogrammier...

Beispielanalyse zum Exportieren, Importieren und Kopieren von Docker-Images

Die erste Lösung besteht darin, das Bild in ein ö...