Avi*_*nda 0 linux process docker docker-compose
我目前在Dockerfile中使用ENTRYPOINT ["/sbs/start.sh"].因此,当容器启动时,start.sh作为pid 1运行,而我的start.sh脚本将另外两个子进程跨越到pid1.我的问题是当我向pid1发送docker stop命令时,docker如何处理子进程?孩子的过程会被优雅地停止吗?还是会被强行杀死?
在我们有子进程的情况下,有一个简单的进程管理器和init系统(https://github.com/Yelp/dumb-init或supervisor)来解决这些问题会更好吗?如果是这样,请建议一个轻量级的init系统?或者可以pid1(在我的情况下start.sh)处理这些问题?
输出ps -ef:
root 1 0 0 19:23 ? 00:00:00 /bin/bash /sbs/start.sh
root 13 1 0 19:23 ? 00:00:00 /sbs/bin/envconsul...
root 20 13 1 19:23 ? 00:00:21 /usr/lib/...
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
Docker在这里不会做任何事情.它只是表示PID 1.如果PID 1有子节点,则需要处理它们的信令.这是标准的unix模型.
有关更多信息,您可以阅读Docker和PID 1 Zombie Reaping Problem.
当PID 1退出时,容器将退出,因此孩子不一定会优雅地退出.如果你希望他们优雅地退出,你将不得不有一些知道如何做到这一点.
上面的链接提供了一个解决方案,一个来自Phusion的图像,它有一个init风格的PID 1来处理这样的事情.还有其他解决方案; 这只是一种选择.
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |