关于容器中进程的继承关系

下图是一个容器中的进程:

  1. 每个容器总是有一个1号进程
  2. 1号进程的父进程在容器中显示为0号进程,而在容器外表现为进程 docker-containerd-shim
  3. 容器中的1号进程不同于宿主机的1号进程那么NB,宿主机的1号进程直接或间接地领导所有其它进程;而容器中的1号进程并不一定直接或间接地领导所有进程,取决于这些进程是否1号进程来创建的,这些进程的父进程死掉后会最终归属到容器内所谓的0号进程而非1号进程,不过,容器中所谓的0号进程并非都是同一个进程
  4. docker top 显示的容器中的进程可能不太全,与是否该进程归属于1号进程没有任何关系;与进程是否最终归属于该容器的管理进程docker-containerd-shim也没有关系,如果是nsenter进入容器,则启动的进程在docker top中是看不到的,虽然该进程在容器中显示的ppid也是0,其实同样是0的ppid却可能不是同一个进程,因为,只要父进程在容器外部,则容器内部显示的ppid就统一为0; 为什么docker top可能看到的不全?docker top是如何实现的呢?参看: https://phpor.net/blog/post/4420

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据