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

start.sh脚本内容如下:

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

总结:
容器中运行多个进程时,前面的进程要用后台方式运行(或添加 &),否则后面的服务无法启动
容器中最后一个守护进程一定要用前台方式运行,否则start.sh退出,容器退出,所有的服务就白启动了
一个docker容器同时只能管理一个前台进程
文章转载自运维DevOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




