Heim > Artikel > Betrieb und Instandhaltung > Was ist der Grund, warum Docker beim Ausführen von Nginx den Daemon deaktiviert?
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_pid
get_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+q
rrreee
Strg+P+Q
schließlich den Container verlassen hat, läuft der Container noch. 🎜Das obige ist der detaillierte Inhalt vonWas ist der Grund, warum Docker beim Ausführen von Nginx den Daemon deaktiviert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!