【问题标题】:PID mapping between docker and hostdocker和host之间的PID映射
【发布时间】:2015-10-25 10:52:19
【问题描述】:

docker 命名空间与 Host 命名空间有何不同,以及如何在这两者之间映射 pid?谁能给我一个想法,帮助使用源代码在主机 n docker 之间轻松映射 pid?

【问题讨论】:

    标签: docker kernel pid


    【解决方案1】:

    您可以在/proc/PID/status 文件中找到映射。它包含如下一行:

    NSpid:  16950   24
    

    这意味着主机上的16950 是容器内的24

    【讨论】:

      【解决方案2】:

      正如我在“Running docker securely”中提到的:

      目前,Docker 使用五个命名空间来改变系统的进程视图:进程、网络、挂载、主机名、共享内存。

      默认情况下,正如我在您之前的问题“Docker Namespace in kernel level”中提到的那样,容器 pid 与主机隔离(除非您使用 --pid host 运行它们)是设计使然。

      如果您使用的是--pid=host,那么这些容器 pid 在主机上是可见的,但不容易与特定容器匹配,直到解决了 issue 10163 and --pid=container:id

      2016 年 5 月更新:issue 10163 and --pid=container:id 实际上由 docker 1.12 的 PR 22481 解析,允许加入另一个容器的 PID 命名空间。

      【讨论】:

      • 如果我在 docker 容器内运行一些 shell 脚本并调用一些系统调用,那么那个时候会通过主机的 pid 或 docker 进程的 pid 吗?请在这里帮忙
      • @SowndaryaK 如果你使用 --pid=host,docker 容器中进程的 pid 将成为主机 pid 命名空间的一部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2011-02-07
      • 2021-06-15
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      相关资源
      最近更新 更多