橡皮擦擦

Docker build nginx启动后持续重启且无错误日志

解决方案

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

docker run的时候把command做为容器内部命令,如果你使用nginx,那么nginx程序将后台运行,这个时候nginx并不是pid为1的程序,而是执行的bash,这个bash执行了nginx指令后就挂了,所以容器也就退出了。

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

Docker未执行自定义的CMD之前,nginx的pid是1,执行到CMD之后,nginx就在后台运行,bash或sh脚本的pid变成了1。
所以一旦执行完自定义CMD,nginx容器也就退出了。

解决方法:
在编写dockerfile的时候加上 “daemon off;”参数,如下:

CMD ["nginx","-g","daemon off;"]

或者

ENTRYPOINT ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

原文来自:《使用Docker构建nginx容器,并且启动后不会自动退出》

点我评论
打赏本文
二维码


36

文章

6

分类