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

JS implementiert Anforderungsdispatcher

Inhaltsverzeichnis Abstraktion und Wiederverwendu...

Wie verfolgt Vue Datenänderungen?

Inhaltsverzeichnis Hintergrund Beispiel Missverst...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.27 winx64

In diesem Artikel wird die Installations- und Kon...

So konfigurieren Sie eine statische Netzwerkverbindung in Linux

Das Konfigurieren der Netzwerkkonnektivität für L...

So zeigen Sie die Zeitzone in MySQL an und ändern sie

Heute habe ich festgestellt, dass ein Programm ei...

Lösen Sie das Problem der unsicheren Docker x509-Registrierung

Nach der Installation von Docker trat beim Versuc...

5 Möglichkeiten, den diagonalen Kopfzeileneffekt in der Tabelle zu erzielen

Jeder muss mit Tabellen vertraut sein. Wir stoßen...