После того, как я использую команду 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.