【问题标题】:Get internal docker PID by system PID通过系统 PID 获取内部 docker PID
【发布时间】:2018-08-25 23:11:25
【问题描述】:

在 docker 容器中使用 exec 命令后,我可以使用 exec inspect 获取 PID。问题是这个 ID 不是容器本地的,而是系统 PID。所以我会得到类似22620的东西,而docker容器内的PID是695

我知道 docker 使用进程命名空间来隔离其进程。所以我试图用 cat /proc/22620/status | grep NSpid .这确实给了我正在寻找的 PID:

NSpid: 22620 695

但是我需要解析这个字符串来获取 PID。 有没有合适的方法来获取 docker 容器使用的 PID?

PS。

我需要这个进程 ID 来终止由其他 exec 调用启动的进程。我无法杀死系统进程,因为它由 root 拥有,我无法使用 sudo。

【问题讨论】:

  • Is there a proper way to get the PID used by the docker container? 你到底是什么意思? Docker 命令?
  • @k.wahome 我无需解析字符串即可。最好使用 docker API
  • 为什么不在容器内杀死它呢? docker exec sh -c 'kill $(pgrep NSpid)' ?
  • @KamilCuk 这正是我需要 NSpid 的目的。

标签: linux docker pid


【解决方案1】:

哦。使用cut 过滤一行中的一个部分。

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

将给出示例中的695

【讨论】:

  • 问题更多的是关于任何官方 docker 风格。或者专门的系统命令,而不是解析字符串。
猜你喜欢
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 2011-05-10
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多