我需要一个部署,其中每个Pod有一个容器,每个容器有2个Java进程正在运行。因为,容器以进程(P1)开始,并且如果该特定进程(P1)被终止,则容器重新启动。我是否有可能以两个过程开始启动容器,即使其中之一被杀死,容器(或本例中的容器,因为每个容器只有一个容器)也会重新启动?我找不到与此相关的任何文档,说明无法完成。另外,如何通过2个进程启动容器?如果我在docker映像中尝试类似的操作(javaProcess是一个Java文件),它将仅运行第一个进程:
java -jar abc.jar
java javaProcess
or
java javaProcess
java -jar abc.jar
如果我用一个进程(P1)启动容器,然后在容器启动后启动另一个进程(P2),则该容器将不会绑定到P2,因此,如果P2终止,则该容器将不会重新启动。但是,我需要它重新启动!
您可以使用超级用户来执行此操作。您的主进程应绑定到docker image中的超级用户,并且两个Java进程应使用超级用户进行管理。
主管的主要目的是根据其配置文件中的数据创建和管理流程。它通过创建子流程来实现。主管产生的每个子流程在整个生命周期中都由主管管理(supervisord是其创建的每个流程的父流程)。当孩子死亡时,监督者会通过SIGCHLD信号通知其死亡,并执行适当的操作。
以下是启动两个Java进程的示例监督配置文件。(supervisord.conf)
[supervisord]
nodaemon=true
[program:java1]
user=root
startsecs = 120
autorestart = true
command=java javaProcess1
[program:java2]
user=root
startsecs = 120
autorestart = true
command=java javaProcess2
在您的docker文件中,您应该执行以下操作:
RUN apt-get update && apt-get install -y supervisor
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句