请教在码头工人中使用主管

在码头工人中使用主管

我不是在询问使用码头工人的主管,而只是想让我的理解得到验证。

我知道docker在运行时会运行一个进程。此外,当我们需要在容器内运行多个进程时,使用supervisor。

我已经看到几个例子,其中一个容器从基本映像启动并安装了几个服务,并且容器被提交以形成一个新映像,所有这些都没有supervisor。

所以,我的基本疑问是两种方法之间的区别。

我的理解是当docker容器停止时它会向PID进程发送一个kill信号,PID 1管理子进程并停止所有的子进程,这正是supervisor所做的那样,而我们可以安装多个进程而不需要supervisor可以在docker run发出进程时运行,当容器停止时,只有PID 1将被发送信号,其他运行进程将不会正常停止。

请确认我对使用的理解supervisord是否正确。


梦里花落0921
浏览 537回答 2
2回答

智慧大石

更新码头1.12(2016年第4季度/ 2017年第1季度)Arnaud Porterie刚刚穿过:[]刚刚合并:有了docker run --init,Rick Grimes会照顾你所有的僵尸。(提交eabae09)参见PR 26061:“ 为僵尸战斗和信号处理添加初始化过程 ”(和PR 26736)这增加了一个小的C二进制文件来对抗僵尸。它安装在/ dev / init下,并预先添加到用户指定的args中。您可以通过守护程序标志dockerd --init启用它,因为默认情况下禁用向后compat。您还可以覆盖守护程序选项,或者在每个容器的基础上指定它docker run --init=true|false。您可以通过运行像这样的进程作为容器中的pid 1来测试这一点,并查看容器在运行时出现的额外僵尸。int main(int argc, char ** argv) {     pid_t pid = fork();     if (pid == 0) {         pid = fork();         if (pid == 0) {             exit(0);         }         sleep(3);         exit(0);     }     printf("got pid %d and exited\n", pid);     sleep(20);}该码头工人守护现在有选项--init在容器内运行init以转发信号并收集进程
打开App,查看更多内容
随时随地看视频慕课网APP