docker host pid模式在群集模式下不起作用

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

我想要一个container与主机PID分享OS命名空间,我在host PID mode找到了docker

PID

pid: "host"

将PID模式设置为主机PID模式。这打开了容器和主机操作系统之间的PID地址空间共享。使用此标志启动的容器将能够访问和操作裸机计算机命名空间中的其他容器,反之亦然。

引自https://docs.docker.com/compose/compose-file/#pid

它似乎与docker rundocker-compose up合作,但swarm模式,例如

$ docker run ---detach --pid=host ubuntu:16.04 tail -f /dev/null
$ docker exec -it container_name top
# Return all processes within host OS namespace.

##docker-compose.yml##
version: '3.4'

services:
    test:
        image: ubuntu:16.04
        command: tail -f /dev/null
        pid: host

$ docker-compose -f docker-compose.yml up -d
$ docker exec -it container_name top
# Return all processes within host OS namespace.

# there is only one manager node in the swarm(no another worker).

$ docker stack deploy -c docker-compose.yml test
$ docker exec -it container_name top 
# Return only container process namespace.

我知道有些选项不适用于swarm mode。但是,在这种情况下,据我所知,docker文档总是指定,例如,container_name选项(请参阅它指定container_name将无法在swarm模式下工作。)。

CONTAINER_NAME

.....

.....

注意:使用(版本3)Compose文件在群集模式下部署堆栈时,将忽略此选项。

我的码头环境是Docker 17.09.0-cedocker-compose 1.17.0上的Ubuntu16。为什么pid模式不能在swarm模式下工作?

docker docker-swarm
2个回答
0
投票

最后,我在github上打开了一个问题,我得到了答案。

https://github.com/docker/docker.github.io/issues/5624


0
投票

通过在群服务中使用--pid=host,docker swarm不支持​​在容器内使用主机的PID命名空间。仅供参考,这是一个补丁,它将pid添加到不受支持的选项列表中,以便打印出警告。

你可以在https://github.com/docker/swarmkit/issues/1605上看到这个

因此,对于最新版本的docker swarm,如果运行该命令:

$ docker stack deploy -c docker-compose.yml foobar

有了--pid=host,你应该得到这个警告:

忽略不支持的选项:pid

如果您必须使用此功能,请坚持使用docker撰写。

如果您有兴趣,https://www.aquasec.com/wiki/display/containers/Docker+Swarm+101有关于Docker Swarm的其他信息。

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