Maison > Article > Opération et maintenance > Quelle est la raison pour laquelle Docker utilise Daemon Off lors de l'exécution de Nginx ?
Questions
1. Pourquoi le conteneur Docker se bloque-t-il lorsqu'il est en cours d'exécution ?
Le conteneur Docker utilisera par défaut le premier processus à l'intérieur du conteneur, c'est-à-dire le programme avec pid=1, comme base pour savoir si le conteneur Docker est en cours d'exécution. Si le pid du conteneur Docker se bloque, le conteneur Docker se fermera directement. .
2. Lorsque docker s'exécute, utilisez command comme commande interne du conteneur. Si vous utilisez nginx, alors le programme nginx s'exécutera en arrière-plan. À ce stade, nginx n'est pas le programme avec le pid 1, mais le bash exécuté. . Ce bash exécute l'instruction nginx. Ensuite, il se bloque, donc le conteneur se ferme également pour la même raison que le vôtre, après le démarrage de pm2, le pid de bash est 1, puis bash se fermera après l'exécution, donc le conteneur se fermera également.
Ci-dessous, j'utiliserai des exemples pour expliquer pourquoi nous faisons cela ! !
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
ctrl+p+q
ait quitté le conteneur, celui-ci est toujours en cours d'exécution. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!