docker运行nginx为什么要使用 nginx -g 'daemon off;'
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执行完以后会退出,所以容器也就退出了。
Nginx的docker仓库原文说明如下:
|
If you add a custom CMD in the Dockerfile, be sure to include -g daemon off;
in the CMD in order for nginx to stay in the foreground, so that Docker can track the process properly (otherwise your container will stop immediately after starting)!
-- 这里的CMD
适用 docker-compose.yml 中的entrypoint
和command
,以及 Dockerfile 中的ENTRYPOINT
和CMD
。
也就是说:
Docker 容器启动时,默认会把容器内部第一个进程,也就是
pid=1
的程序,作为docker容器是否正在运行的依据,如果 docker 容器pid=1的进程挂了,那么docker容器便会直接退出。Docker未执行自定义的CMD之前,nginx的pid是1,执行到CMD之后,nginx就在后台运行,bash或sh脚本的pid变成了1。
所以一旦执行完自定义CMD,nginx容器也就退出了。
docker运行nginx为什么要使用 nginx -g 'daemon off;'相关推荐
- docker运行报错:Error response from daemon:Container {containerId} is not running
问题产生: 已启动docker服务systemctl start docker.service,由于本地8080端口之前已经在使用忘记关闭了,在执行docker run -dit --privileg ...
- Docker(3):docker运行nginx实例以及在java容器中运行java程序
一.目的 通过运行nginx可以充分理解运行镜像原理,以及镜像内部虚拟网络端口和服务器端口的桥接关系.同时,使用java容器,编译java文件,并且运行java程序. 二.docker运行nginx镜 ...
- docker 运行 php nginx_docker搭建nginx+mysql+php
主要概念是 容器 和 镜像. 要先有镜像,启动镜像后,才有容器的出现. 不恰当地用类和实例来理解,镜像是类,容器是实例. 部分命令 拉取镜像docker pull {{具体镜像}}查看本机镜像dock ...
- centos 访问网页重启php_php项目上线基于docker运行php+源码编译实现Nginx+阿里云RDS连接实现...
项目背景: 公司项目上线要求运维把上线工作做好,并实现稳定性运行,活不多说,干! 环境要求: CentOS Linux release 7.2.1511 (Core) docker 版本:19.03. ...
- [docker]三、docker理论概念(镜像、仓库、容器),用docker运行nginx来搭建一个属于自己网站。查看进程监听哪个端口的命令
目录 1.docker概念 1.1.镜像(image) 1.2.容器(container) 1.3.仓库(repository) 1.4.理解 2.用docker运行nginx 2.1.正常命令开启n ...
- win docker运行nginx
docker pull nginx # 拉取镜像 mkdir -p //f/DATA/docker-data/nginx/conf # 创建配置文件目录# 拷贝配置文件 docker run --na ...
- Ubuntu 17.04 x64 安装 Docker CE 初窥 Dockerfile 部署 Nginx
Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本!使用 Docker,可以让应用的部署.测试和分发都变得前所未有的高效和轻松! 无 ...
- 基于nerdctl + buildkitd构建容器镜像,运行tomcat后端服务和nginx前端服务
目录 简介: 一.部署buildkitd 1.下载二进制包 2. 解压二进制包,并移到全局变量中 3.创建socket文件,service文件 4.启动服务 二.使用nerdctl命令测试镜像构建 1 ...
- 写给Java开发看的 Docker 干货(零基础部署Nginx MySQL SpringBoot)
前言 Docker是当下使用最多的一种容器技术,想精通Docker并不容易,在公司生产中会有专门的运维人员负责.但是身为开发人员,适当的学习Docker是必要的.Docker的好处这里就不介绍了,网上 ...
最新文章
- Linux-Copy On Write写时复制机制初探
- pdf常用字体包 -baijiahao_PDF 的各种操作,我用 Python 来实现(附网站和操作指导)
- boost::posix_time模块实现闹钟的测试程序
- jQuery下table操作示例(附案例源码)
- PHP 基本语法,变量
- 自己编制windows的后台进程程序
- awk 匹配_linux的awk命令详解,通俗易懂
- HTML-超链接锚点笔记
- FCKeditor上传漏洞总结
- ik做尾巴摆动 maya_【周六幸福时刻】故事分享:小蝌蚪尾巴怎么没了
- 外部表不是预期的格式怎么解决_1分钟拆解:如何将10多个工作表sheet,合并成一张?...
- (免费领取Java面试题)Java面试中经常被问到的问题
- Qt:#pragma comment(lib,“ws2_32.lib“) 报错
- 计算机设计大赛材料准备讲解
- 仿网易评论盖楼的留言板插件demo
- matlab rms数据滤波,与RMS相关的5个信息,如何通过RMS结果滤波来提高精度
- linux带方括号进程,Linux特殊符号大全(转摘)
- 2021-2027全球与中国卸扣式绝缘子市场现状及未来发展趋势
- 适合520送礼物的无线蓝牙耳机,颜值高性价比高的520无线蓝牙耳机
- 微信小程序 Basic Auth 前后端restful api进行身份验证