纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

docker运行nginx使用daemon off 浅谈docker运行nginx为什么要使用daemon off

Godtoy   2021-03-30 我要评论

很开心啊遇到这个问题就要讲讲docker容器的进程原理了基本上了解过docker的人都清楚docker的几个隔离方式那么进程同样是进行隔离。

问题

1.docker容器跑着为啥会挂掉?

docker 容器默认会把容器内部第一个进程也就是pid=1的程序作为docker容器是否正在运行的依据如果docker 容器pid挂了那么docker容器便会直接退出。

2.docker run的时候把command最为容器内部命令如果你使用nginx那么nginx程序将后台运行这个时候nginx并不是pid为1的程序而是执行的bash这个bash执行了nginx指令后就挂了所以容器也就退出了和你这个一样的道理pm2 start 过后bash 的pid为1那么此时bash执行完以后会退出所以容器也就退出了。

下面我使用实例告诉why we do this!!

touch file 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退出容器后容器依然运行。

总结

如果楼主是需要去在docker中使用node那么就没必要去安装pm2等工具了直接node如果你怕你的容器会挂掉可以加上restart等相关参数比如`docker run .... --restart=always

以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持。


相关文章

猜您喜欢

  • java集合 Java集合总结

    想了解Java集合总结的相关内容吗sdr_zd在本文为您仔细讲解java集合的相关知识和一些Code实例欢迎阅读和指正我们先划重点:java集合,java集合总结,java集合介绍下面大家一起来学习吧。..
  • 易语言拖放组件如何使用 易语言拖放组件使用技巧

    想了解易语言拖放组件使用技巧的相关内容吗在本文为您仔细讲解易语言拖放组件怎样使用的相关知识和一些Code实例欢迎阅读和指正我们先划重点:易语言,拖放组件下面大家一起来学习吧。..

网友评论

Copyright 2020 www.Shellfishsoft.com 【贝软下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式