Docker führt Nginx mithilfe einer Daemon-Off-Instance-Analyse aus

PHPz
Freigeben: 2023-06-03 14:04:12
nach vorne
1631 Leute haben es durchsucht

Fragen

1. Warum bleibt der Docker-Container hängen, wenn er ausgeführt wird?

Der Docker-Container verwendet standardmäßig den ersten Prozess im Container, also das Programm mit pid=1, als Grundlage dafür, ob der Docker-Container läuft. Wenn die Docker-Container-PID 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 Nginx zu diesem Zeitpunkt nicht als Programm mit PID 1 ausgeführt . Diese Bash führt die Nginx-Anweisung aus, sodass der Container ebenfalls beendet wird. Nach dem Start von pm2 ist die Bash 1 und wird nach der Ausführung beendet.

Im Folgenden werde ich anhand von Beispielen erklären, warum wir das tun! !

touch file get_pidget_pid

echo "pid of this script: $$"
echo "ppid of this script: $ppid"
echo "uid of this script: $uid"
#nginx -g 'daemon off;'
Nach dem Login kopieren

此时我们启动容器去执行这个sh文件

odtoy:~ zhaojunlike$ eval `docker-machine env default`
godtoy:~ zhaojunlike$ cd workspace/
godtoy:workspace zhaojunlike$ ls
docker  nodejs  php  pid_get
godtoy:workspace zhaojunlike$ vim pid_get 
godtoy:workspace zhaojunlike$ docker run -v `pwd`/pid_get:/pid_get:ro --rm --workdir=/ nginx bash /pid_get
pid of this script: 1
ppid of this script: 0
uid of this script: 0
godtoy:workspace zhaojunlike$
Nach dem Login kopieren

在容器执行完pid_get 后,容器也就自动退出了,这个时候,打印出了当前的bash运行的pid是1。

所以,如果我们想让容器不挂掉,那么非守护进行的执行是必须得,当然下面也能去让一个容器内部,执行

godtoy:workspace zhaojunlike$ docker run -it nginx bash
root@a8baa5fe77f0:/# nginx
root@a8baa5fe77f0:/# godtoy:workspace zhaojunlike$
Nach dem Login kopieren

我们使用-it参数可以连接到容器内部的管道,然后我们在容器内部使用nginx命令。最后ctrl+p+qrrreee

Zu diesem Zeitpunkt starten wir den Container, um diese SH-Datei auszuführen🎜rrreee🎜Nachdem der Container pid_get ausgeführt hat, wird der Container automatisch beendet. Zu diesem Zeitpunkt ist der aktuelle Wert gedruckt Die PID der laufenden Bash ist 1. 🎜🎜Wenn wir also verhindern wollen, dass der Container hängen bleibt, ist eine Nicht-Daemon-Ausführung ein Muss. Natürlich können wir ihn auch innerhalb eines Containers ausführen🎜rrreee🎜Wir verwenden den Parameter -it, um eine Verbindung zur Pipe innerhalb des Containers herzustellen . Dann verwenden wir Nginx-Befehle innerhalb des Containers. Nachdem Strg+P+Q schließlich den Container verlassen hat, läuft der Container noch. 🎜

Das obige ist der detaillierte Inhalt vonDocker führt Nginx mithilfe einer Daemon-Off-Instance-Analyse aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage