Lösen Sie das Problem, dass Docker-Container sofort nach dem Start beendet werden

Lösen Sie das Problem, dass Docker-Container sofort nach dem Start beendet werden

Kürzlich habe ich mir angesehen, wie Docker es Containern ermöglicht, bestimmte Prozesse direkt beim Start auszuführen. Später habe ich festgestellt, dass Dockerfile den Ausführungsbefehl für den Container angeben kann, wenn dieser gestartet wird.

CMD gibt an, aber jedes Dockerfile kann nur eine CMD-Anweisung haben. Wenn mehrere CMD-Anweisungen angegeben werden, wird nur die letzte ausgeführt.

Also habe ich mir eine Möglichkeit überlegt, ein Skript geschrieben, mehrere Prozesse im Skript gestartet und das Skript in Dockerfile ausgeführt.

Schließlich erwies sich diese Methode als durchführbar. Allerdings trat während des Experiments ein Problem auf. Der Container blieb sofort nach dem Start stehen.

Nach Einsichtnahme in die Informationen:

Ein Docker-Container kann jeweils nur einen Prozess verwalten. Wenn dieser Prozess beendet wird, wird auch der Container beendet. Dies bedeutet jedoch nicht, dass der Container nur einen Prozess ausführen kann (andere Prozesse können im Hintergrund ausgeführt werden). Damit der Container jedoch nicht beendet wird, muss ein Prozess im Vordergrund ausgeführt werden.

Lösung:

Der letzte Prozess im Skript muss im Vordergrundmodus ausgeführt werden, d. h. fügen Sie am Ende des Prozesses kein & hinzu (& bedeutet Ausführung im Hintergrund), da sonst der Container beendet wird.

Zusatzwissen: Probleme und Lösungen bei der Nutzung von gdbserver in einem Docker-Container

Ich habe ein Problem bei der Verwendung von gdbserver in einem Docker-Container

linux_ptrace_test_ret_to_nx: PTRACE_TRACEME kann nicht ausgeführt werden: Vorgang nicht zulässig

Der Grund dafür ist, dass Docker die PTRACE-Funktion standardmäßig deaktiviert und aktiviert werden muss, wenn der Container ausgeführt wird.

docker run -ti --cap-add=SYS_PTRACE ubuntu

Der obige Artikel zur Lösung des Problems, dass Docker-Container unmittelbar nach dem Start beendet werden, ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen, und ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

Das könnte Sie auch interessieren:
  • Jedes Mal, wenn Docker einen Container startet, werden die IP und die Hosts mit den angegebenen Operationen
  • Detaillierte Erläuterung der Startreihenfolge des Docker-Containers mithilfe eines Shell-Skripts
  • Docker ändert die Konfigurationsinformationen eines nicht gestarteten Containers
  • Dockerfile-Implementierungscode beim Starten von zwei Prozessen in einem Docker-Container
  • Docker-Dateispeicherpfad, Befehlsvorgang zum Starten des Containers abrufen
  • Docker-Batch starten und alle Container schließen

<<:  Document Object Model (DOM) in JavaScript

>>:  Einführung in HTML DOM_PowerNode Java Academy

Artikel empfehlen

Verwendung und Verschönerung von HTML-Blockquote-Tags

Definition und Verwendung von Blockquote Das Tag ...

Zusammenfassung der 16 XHTML1.0- und HTML-Kompatibilitätsrichtlinien

1. Vermeiden Sie es, die Seite als XML-Typ zu dek...

Der Unterschied zwischen Löschen, Abschneiden und Löschen und wie man wählt

Vorwort Letzte Woche fragte mich ein Kollege: „Br...

Reacts Methode zur Realisierung einer sekundären Verknüpfung

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

Verwendung des MySQL-Zeitstempels

Vorwort: Zeitstempelfelder werden häufig in MySQL...

Grafisches Tutorial zur Installation von Linux CentOS6.9 unter VMware

Als technischer Neuling zeichne ich den Vorgang d...

Zusammenfassung der MySQL-Ansichtsprinzipien und Anwendungsbeispiele

Dieser Artikel fasst die Prinzipien und die Verwe...