2015-10-25 3 views
5

Как пространство имен докеров отличается от пространства имен хостов и как можно сопоставить pid между этими двумя? Может ли кто-нибудь дать мне идею, которая помогает сделать простой способ сопоставления pid между хостом n docker с использованием исходного кода?PID-сопоставление между докером и узлом

ответ

5

Как я отмечал в "Running docker securely":

В настоящее время Докер использует пять пространств имен, чтобы изменить процессы вид системы: процесс, сеть, Mount, Hostname, разделяемой памяти.

Тот факт, что, по умолчанию, как я уже упоминал в своем предыдущем вопросе «Docker Namespace in kernel level» контейнер ИДП изолирован от хоста (если не запускать их с --pid host) является конструкцией.

Если вы используете --pid=host, то указанные контейнерные контейнеры видны с хоста, но не могут быть легко сопоставлены с конкретным контейнером, пока не будет разрешен issue 10163 and --pid=container:id.

Обновление от мая 2016 года: issue 10163 and --pid=container:id фактически разрешено PR 22481 для докера 1.12, что позволяет присоединиться к пространству имен PID другого контейнера.

+0

Если я запустил некоторый сценарий оболочки внутри контейнера докера и который вызывает некоторый syscall, это время будет проходить через pid процесса pid хоста или докера? пожалуйста, помогите здесь –

+0

@SowndaryaK, если вы используете -pid = host, pid процесса в контейнере докера будет частью пространства имен pid хоста. – VonC

3

Вы можете найти их в файле /proc/PID/status. Он содержит строку:

NSpid: 16950 24 

Это означает, что 16950 на хосте 24 внутри контейнера.

Смежные вопросы