问题:
-
假设redis在容器里运行,redis在执行rdb备份的时候,也会fork出一个进程
-
这时候要是主进程挂掉,这个子进程会成为子进程吗?
疑问:
在 理解 Pod 和容器设计模式中看到描述说:
把这个 PID=1 的进程给 kill 了,或者它自己运行过程中死掉了,那么剩下三个进程的资源就没有人回收了
这样,存在子进程的应用的容器岂不是都有bug?
解答:
来自:linux - What happens to other processes when a Docker container's PID1 exits? - Stack Overflow
意思大概是:
- 通过
CLONE_NEWPID
在新的命名空间中创建第一个进程,该进程具有PID=1,这个进程是命名空间的“init”进程; - 在命名空间中的孤儿进程(别的进程异常退出产生的)将重新成为该命名空间“init”进程的子进程,而不是 init(8)的子进程;
- 与传统的 init 进程不同,PID 命名空间的“init”进程可以终止,如果终止,则命名空间中的所有进程都将终止。
网友评论