Docker容器内运行多进程问题

网友投稿 1273 2022-11-04

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Docker容器内运行多进程问题

Docker的设计机制为默认情况下一个容器中只能运行一个进程,但是在日常工作中,有时候需要在一个容器内运行多个进程的情况,比如,搭建redis哨兵。

redis通过容器来跑,那么搭建哨兵有两种方式,第一种是单独再跑一个容器用来运行哨兵,还有一种方式是直接在现在redis容器内部运行一个哨兵进程(不太推荐,如果测试环境可以考虑)。

下面的Dockerfile是运行redis以及哨兵的例子,其中以redis为基础镜像,将redis,conf配置文件和哨兵配置文件copy到容器中,并将启动脚本也拷贝进去,最后执行脚本 ,如图:

start.sh脚本内容如下:

从上图中可以看出,启动redis的命令后面加了一个后台运行符号’&’ ,如果不加这个符号,那么redis就会在前台运行,那么哨兵程序就不会在继续执行,如果加了’&’,那么第一个redis就会在后台运行,然后启动第二个哨兵程序,哨兵程序在前台运行,从而保证容器可持续运行

启动容器后可以看到内部跑了两个进程,如图:

总结:

容器中运行多个进程时,前面的进程要用后台方式运行(或添加 &),否则后面的服务无法启动容器中最后一个守护进程一定要用前台方式运行,否则start.sh退出,容器退出,所有的服务就白启动了

一个docker容器同时只能管理一个前台进程

上一篇:软件测试培训之接口测试业务场景如何梳理
下一篇:软件测试培训之枚举测试
相关文章

 发表评论

暂时没有评论,来抢沙发吧~