2015-10-25 52 views
5

碼頭名稱空間和主機名稱空間的不同以及pid如何在這兩者之間進行映射?任何人都可以給我一個想法,有助於使用源代碼在主機和碼頭之間映射pid的簡單方法嗎?碼頭和主機之間的PID映射

回答

5

正如我在「Running docker securely」中提到:

目前,泊塢使用五個命名空間來改變系統的過程視圖:進程,網絡,芒,主機名,共享內存。

,默認情況下,正如我在以前的問題中提到「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名稱空間。

+0

如果我在docker容器內部運行一些shell腳本並調用了一些系統調用,那個時間會通過主機或docker進程pid的pid?請在這裏幫助 –

+0

@SowndaryaK如果您正在使用--pid = host,則docker容器中的進程的pid將成爲主機pid名稱空間的一部分。 – VonC

3

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

NSpid: 16950 24 

這意味着16950主機上是24容器內。