Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Docker führt Nginx mithilfe einer Daemon-Off-Instance-Analyse aus

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

PHPz
PHPznach vorne
2023-06-03 14:04:121635Durchsuche

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;'

此时我们启动容器去执行这个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$

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

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

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

我们使用-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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen