nginx docker官方镜像添加自定义命令自动退出

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了nginx docker官方镜像添加自定义命令自动退出脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

nginx docker官方镜像添加自定义启动命令自动退出

​ 今天在启动nginx官方镜像的时候想在启动后执行一些CMD命令,但发现每次执行完CMD命令后镜像会自动退出,在网上查找后发现F1a;

​ 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)!

译文:

​ 如果你再Dockerfile中添加了一条自定义的CMD命令,为了使nginx保持在前台运行请确定CMD命令中包含参数 -g daemon off; ,这样Docker才能正确的跟踪进程(否则你的容器回在启动后立即停止)

​ 再从docker的运行机制来说明:

​ docker判断容器是否运行的依据是容器内pid(进程号)为1的进程是否结束,一旦pid=1的进程结束后容器也会随之退出。

​ 在未添加自定义的CMD命令时,nginx容器中pid=1的进程是nginx,而添加了CMD命令后,这条自定义的CMD命令的pid变成了1,而nginx进程转为守护线程的方式来执行,当自定义的CMD命令执行结束后,容器便会随之退出!

解决方法 : 添加全局参数 -g ‘daemon off’;

解释:设置nginx不以守护线程的方式运行,这样nginx始终保持进程号pid=1,这样容器就会随着nginx一直运行下去。

示例:

  • dockerfile

    From nginx:latest
    CMD echo "hello" && exec nginx -g 'daemon off;'
    
  • 命令行

    docker run -itd nginx:latest /bin/bash echo "hello" && exec nginx -g 'daemon of f;'
    

    纯属个人理解,若有不足还请指正!

参考博客:

Docker启动Nginx容器有entrypoint或command

脚本宝典总结

以上是脚本宝典为你收集整理的nginx docker官方镜像添加自定义命令自动退出全部内容,希望文章能够帮你解决nginx docker官方镜像添加自定义命令自动退出所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。