【发布时间】:2017-12-26 09:39:32
【问题描述】:
我想要一个container 与主机OS 共享PID 命名空间,我在docker 中找到了host PID mode。
pid
pid: "host"将 PID 模式设置为主机 PID 模式。这开启 在容器和主机操作系统之间共享 PID 地址空间。使用此标志启动的容器将能够 访问和操作裸机机器中的其他容器 命名空间,反之亦然。
它似乎适用于docker run 和docker-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 模式下不起作用。)。
容器名称
.....
.....
注意:在使用 swarm 模式部署堆栈时,此选项将被忽略 一个(版本 3)撰写文件。
我的 docker 环境是Docker 17.09.0-ce,docker-compose 1.17.0 on Ubuntu16。为什么pid 模式不能在swarm 模式下工作?
【问题讨论】:
标签: docker docker-swarm