Ich bin sehr glücklich. Wenn ich auf dieses Problem stoße, muss ich über das Prozessprinzip des Docker-Containers sprechen. Grundsätzlich sind sich Leute, die Docker kennen, mehrerer Isolationsmethoden von Docker bewusst, und der Prozess ist auch isoliert. Frage 1. Warum stürzt der Docker-Container während der Ausführung ab? Standardmäßig verwendet der Docker-Container den ersten Prozess im Container, also das Programm mit PID = 1, als Grundlage dafür, ob der Docker-Container ausgeführt wird. Wenn die PID des Docker-Containers hängt, wird der Docker-Container direkt beendet. 2. Wenn Docker ausgeführt wird, verwenden Sie den Befehl als internen Befehl des Containers. Wenn Sie nginx verwenden, wird das nginx-Programm im Hintergrund ausgeführt. Zu diesem Zeitpunkt ist nginx kein Programm mit PID 1, sondern Bash wird ausgeführt. Diese Bash bleibt nach der Ausführung des nginx-Befehls hängen, sodass der Container ebenfalls beendet wird. Der gleiche Grund gilt für Sie. Nach dem Start von pm2 ist die PID von Bash 1. Zu diesem Zeitpunkt wird Bash nach der Ausführung beendet, sodass der Container ebenfalls beendet wird. Im Folgenden erkläre ich Ihnen anhand von Beispielen, warum wir das tun! ! Touch-Datei echo "PID dieses Skripts: $$" echo "PPID dieses Skripts: $PPID" echo "UID dieses Skripts: $UID" #nginx -g 'Daemon aus;' An diesem Punkt starten wir den Container, um diese sh-Datei auszuführen odtoy:~ zhaojunlike$ eval `docker-machine env default` godtoy:~ zhaojunlike$ cd Arbeitsbereich/ godtoy:WorkSpace zhaojunlike$ ls Docker NodeJS PHP PID_GET godtoy:Arbeitsbereich zhaojunlike$ vim pid_get godtoy:Arbeitsbereich zhaojunlike$ docker run -v `pwd`/pid_get:/pid_get:ro --rm --workdir=/ nginx bash /pid_get PID dieses Skripts: 1 PPID dieses Skripts: 0 UID dieses Skripts: 0 godtoy:Arbeitsbereich zhaojunlike$ Nachdem der Container pid_get ausgeführt hat, wird er automatisch beendet. Zu diesem Zeitpunkt wird die PID der aktuellen Bash-Ausführung als 1 ausgegeben. Wenn wir also nicht möchten, dass der Container abstürzt, ist die Ausführung ohne Daemon ein Muss. Natürlich können wir auch innerhalb eines Containers ausführen. godtoy:Arbeitsbereich zhaojunlike$ docker run -it nginx bash root@a8baa5fe77f0:/# nginx root@a8baa5fe77f0:/# godtoy:WorkSpace zhaojunlike$ Wir verwenden den Parameter -it, um eine Verbindung mit der Pipeline innerhalb des Containers herzustellen, und dann verwenden wir den Befehl nginx innerhalb des Containers. Schließlich wird der Container Zusammenfassen Wenn Sie Node in Docker verwenden müssen, müssen Sie keine Tools wie pm2 installieren. Führen Sie Node einfach direkt aus. Wenn Sie befürchten, dass Ihr Container abstürzt, können Sie Neustart und andere zugehörige Parameter hinzufügen, z. B. 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:
|
<<: React verwendet Routing, um zur Anmeldeoberfläche umzuleiten
>>: So implementieren Sie das MySQL-Umschalten des Datenspeicherverzeichnisses
Szenario 1: So erzielen Sie einen halbtransparent...
Inhaltsverzeichnis Modusparameter HashHistorie Ha...
Inhaltsverzeichnis Vorwort Start Vorwort Die Stan...
Ohne weitere Umschweife Beginnen Sie mit der Aufz...
1. Übersicht Redis Cluster ermöglicht hohe Verfüg...
Vorwort Das Transaktionsdatenwörterbuch und das a...
In Sprachen werden häufig Makros zur Implementier...
Inhaltsverzeichnis Vorwort Zusammenfassung des Pr...
Was ist VNode In vue.js gibt es eine VNode-Klasse...
1. Ein-Klick-Installation des Mysql-Skripts [root...
Problembeschreibung Im aktuellen Hintergrunddiens...
Kurzbeschreibung Passend für Leser: Mobile Entwic...
Inhaltsverzeichnis 1. Ursprüngliche Definition 2....
Eine beträchtliche Anzahl von Websites verwendet d...
Ich möchte das grafische Tutorial zur Installatio...