So implementieren Sie den Selbststart eines Docker-Containers

So implementieren Sie den Selbststart eines Docker-Containers

Container-Autostart

Docker bietet einen Neustartrichtlinienmechanismus, der steuern kann, dass der Container automatisch gestartet wird, wenn der Container beendet wird oder Docker neu gestartet wird. Diese Neustartrichtlinie stellt sicher, dass zusammengehörige Container in der richtigen Reihenfolge gestartet werden. Obwohl diese Aktion auch durch eine Prozessüberwachung (wie etwa systemd) erreicht werden kann, empfiehlt Docker dennoch, die Verwendung der Prozessüberwachung zum „Selbststarten“ von Containern zu vermeiden.

Es gibt einen Unterschied zwischen der Neustartrichtlinie von Docker und dem Startflag --live-restore des Befehls dockerd: Das Flag --live-restore stellt sicher, dass der Container beim Upgrade von Docker weiter ausgeführt wird, die Netzwerk- und Benutzerterminaleingaben jedoch unterbrochen werden.

Was genau ist also eine Neustartrichtlinie? Schauen wir uns die tatsächliche Situation an.

Verwenden der Neustartrichtlinie

Die Neustartrichtlinie wird durch das Flag --restart angegeben, wenn der Container mit docker run gestartet wird. Für dieses Flag stehen mehrere Werte zur Auswahl, und unterschiedliche Werte haben unterschiedliche Verhaltensweisen, wie in der folgenden Tabelle aufgeführt:

Flagge Beschreibung
NEIN Den Container nicht automatisch neu starten. (Standardwert)
bei Ausfall Der Container wird mit einem Fehler beendet (der Container-Exit-Status ist nicht 0) und startet den Container neu
sofern nicht gestoppt Starten Sie den Container nur neu, wenn der Container gestoppt wurde oder Docker gestoppt/neu gestartet wurde.
stets Starten Sie den Container nur neu, wenn der Container gestoppt wurde oder Docker gestoppt/neu gestartet wurde.

Beispiel: Der folgende Befehl startet einen Redis-Container. Wenn der Redis-Container gestoppt oder Docker neu gestartet wird, wird der Redis-Container neu gestartet.

$ docker run -dit --restart, sofern nicht angehaltenes Redis

Details zur Neustartrichtlinie

Beim Einsatz von Neustartrichtlinien müssen Sie auf folgende Details achten:

(1) Die Neustartrichtlinie wird erst wirksam, nachdem der Container erfolgreich gestartet wurde. „Erfolgreicher Start“ bedeutet hier, dass der Container seit mindestens 10 Sekunden aktiv ist und von Docker überwacht wird. Damit soll verhindert werden, dass Container, die nicht erfolgreich gestartet wurden, in eine Endlosschleife von Neustarts geraten.

(2) Wenn Sie einen Container manuell stoppen (was ist der Unterschied zum expliziten Stoppen oben), wird die für den Container festgelegte Neustartrichtlinie ignoriert, sofern nicht der Docker-Daemon oder der Container manuell neu gestartet wird. Dadurch wird ein weiterer Teufelskreis vermieden.

(3) Neustartrichtlinien können nur für Container verwendet werden. Für Swarm-Dienste haben Neustartrichtlinien ungültige Konfigurationen.

Prozessüberwachung

Wenn die oben genannten Neustartrichtlinien Ihren Anforderungen nicht entsprechen, können Sie auch Lösungen zur Prozessüberwachungsverwaltung verwenden, wie z. B. Upstart, Systemd oder Supervisor usw.

Bei dieser Lösung läuft der Prozessüberwachungsdienst im Container. Es kann überwachen, ob ein Prozess ausgeführt wird, und den Prozess starten, wenn er nicht ausgeführt wird. Docker ist sich von all dem, was passiert, überhaupt nicht bewusst.

Docker empfiehlt diese Methode nicht zur Prozessüberwachung. Der Grund ist einfach. Diese Methode hängt mit der Systemplattform und sogar der Linux-Distribution zusammen.

Original: https://docs.docker.com/engine/admin/start-containers-automatically/#use-a-process-manager

Docker-Container startet automatisch beim Booten

Wenn Sie den Container mit Docker Run starten, verwenden Sie den Parameter --restart, um Folgendes festzulegen:

# docker run -m 512m --memory-swap 1G -it -p 58080:8080 --restart=alway

 --name bvrfis --volumes-from logdata mytomcat:4.0 /root/run.sh   

--restart spezifische Parameterwertdetails:

  • nein – wenn der Container beendet wird, starten Sie den Container nicht neu;
  • bei Fehler – Starten Sie den Container nur neu, wenn er mit einem Status ungleich Null beendet wird;
  • immer – starten Sie den Container unabhängig vom Beendigungsstatus neu;

Sie können auch angeben, wie oft Docker maximal versucht, den Container bei Verwendung der On-Failure-Strategie neu zu starten. Standardmäßig versucht Docker, Container immer wieder neu zu starten.

# sudo docker run --restart=on-failure:10 redis

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:
  • 6 Lösungen für Netzwerkfehler im Docker-Container
  • Beispiel zum Erstellen und Ausführen mehrerer MySQL-Container in Docker
  • So isolieren Sie Benutzer in Docker-Containern
  • Detaillierte Erklärung zum Importieren/Exportieren von MySQL-Daten im Docker-Container
  • Docker-Container verwendet Jenkins zum Bereitstellen von Webprojekten (Zusammenfassung)
  • Methode zum Zugriff auf unabhängige IP im Docker-Container
  • Detaillierte Erklärung zur Migration lokaler Docker-Container auf den Server
  • So verwenden Sie Mysql im Tomcat-Container unter Docker
  • So installieren und deinstallieren Sie die Docker-Anwendungscontainer-Engine unter Centos7
  • Fügen Sie die Portzuordnung hinzu, nachdem der Docker-Container gestartet wurde
  • Detaillierte Erläuterung der Docker-Portzuordnung und Containerverbindung
  • Docker-Tutorial: Container verwenden (einfaches Beispiel)

<<:  Probleme und Lösungen für MYSQL5.7.17-Verbindungsfehler unter MAC

>>:  JS implementiert Click-Drop-Effekt

Artikel empfehlen

Implementierung des CSS-Ladeeffekts Pac-Man

emmm, der Name ist nur eine zufällige Vermutung 2...

Vue muss Wissenspunkte lernen: die Verwendung von forEach()

Vorwort Bei der Frontend-Entwicklung stoßen wir h...

So verwalten Sie Docker über die Benutzeroberfläche

Docker wird in immer mehr Szenarien verwendet. Fü...

Vue verwendet drei Methoden zum Aktualisieren der Seite

Beim Schreiben von Projekten stoßen wir häufig au...

js zur Implementierung einer Interferenz mit Verifizierungscodes (statisch)

In diesem Artikel wird der spezifische Code von j...

Webdesign-Referenz Firefox-Standardstil

Obwohl das W3C einige Standards für HTML festgeleg...

React realisiert den gesamten Prozess des Seitenwasserzeicheneffekts

Inhaltsverzeichnis Vorwort 1. Anwendungsbeispiele...

Spezifische Verwendung der MySQL-Vorbereitungsvorverarbeitung

Inhaltsverzeichnis 1. Vorverarbeitung 2. Vorbehan...

Tutorial zur Verwendung des Hyperlink-Tags in HTML

Die verschiedenen HTML-Dokumente der Website sind...

Aufbau einer Docker+K8S-Clusterumgebung und verteilte Anwendungsbereitstellung

1. Docker installieren yum installiere Docker #St...

Einführung in die Verwendung des offiziellen MySQL-Leistungstesttools mysqlslap

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

Detaillierte Erläuterung der Deep Copy und Shallow Copy im JS-Variablenspeicher

Inhaltsverzeichnis Variabler Typ und Speicherplat...