当前位置: 代码网 > it编程>开发工具>Docker > nginx docker官方镜像添加自定义命令自动退出方式

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

2026年01月19日 Docker 我要评论
nginx docker官方镜像添加自定义启动命令自动退出今天在启动nginx官方镜像的时候想在启动后执行一些cmd命令,但发现每次执行完cmd命令后镜像会自动退出,在网上查找后发现:​ if you

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

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

​ 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;'

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com