Получить внутренний PID докера по системному PID - PullRequest
0 голосов
/ 26 августа 2018

После того, как я использую команду exec внутри контейнера докера, я могу получить PID с помощью exec inspect . Проблема в том, что этот идентификатор не локальный для контейнера, а системный PID. Таким образом, я получил бы что-то вроде 22620, в то время как PID внутри док-контейнера 695.

Я знаю, что докер использует пространства имен процессов для изоляции своих процессов. Поэтому я попытался получить внутренний PID с cat /proc/22620/status | grep NSpid , Это действительно дало мне PID, который я искал:

NSpid: 22620 695

Но мне нужно проанализировать эту строку, чтобы получить PID. Есть ли правильный способ получить PID, используемый контейнером Docker?

PS.

Мне нужен этот идентификатор процесса, чтобы завершить процесс, запущенный другим вызовом exec. Я не могу убить системный процесс, так как он принадлежит root, и я не могу использовать sudo.

1 Ответ

0 голосов
/ 27 августа 2018

Оч.Используйте cut для фильтрации раздела из строки.

grep NSpid /proc/24918/status | cut -f3

Даст 695 из примера.

...