多个容器之间可以共享PID命名空间吗?

问题描述 投票:0回答:1

我有 3 个容器:

containerA
containerB
containerC
。我无法控制他们。

我正在开发第四个容器,其中包含采样分析器,因此需要访问其他容器内的进程。以前,当我只需要访问

containerA
时,我使用命令
docker run --security-opt="apparmor=unconfined" --cap-add=SYS_PTRACE --pid=container:12345abc --rm -it --entrypoint bash mycontainer
并且它按预期工作。现在,我需要能够访问所有 3 个容器中的进程。有办法做到这一点吗?

docker
1个回答
0
投票

一个容器只有一个 PID 命名空间:您可以(如问题中所示)让一个容器使用另一个容器的 PID 命名空间,但无法为容器提供访问多个 PID 命名空间的权限。

一种选择是在同一 PID 命名空间中运行所有四个容器,例如:

docker run --name containerA ...
docker run --name containerB --pid container:containerA ...
docker run --name containerC --pid container:containerA ...
docker run --name containerD --pid container:containerA ...

第二个选项是在 host pid 命名空间中运行分析容器,在这种情况下,它将能够看到在所有其他容器中运行的进程...但它将具有 pid 的主机视图比容器视图:

docker run --pid host ...

您需要弄清楚如何将主机 pid 映射到相应的容器。 here描述了一种机制,但还有其他方法可以实现这一点。

© www.soinside.com 2019 - 2024. All rights reserved.