[英]docker host pid mode doesn't work in swarm mode
我希望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
模式下不起作用。)。
container_name
.....
.....
注意:在以(版本3)撰寫文件以群集模式部署堆棧時,將忽略此選項。
我的Docker 17.09.0-ce
環境是Docker 17.09.0-ce
,在Ubuntu16
上Ubuntu16
docker-compose 1.17.0
Ubuntu16
。 為什么pid
模式在swarm
模式下不起作用?
最后,我在github上打開了一個問題,並得到了答案。
通過在swarm服務中使用--pid=host
, --pid=host
swarm不支持在容器內使用主機的PID名稱空間。 僅供參考,該補丁已將pid添加到不支持的選項列表中,以便打印警告。
您可以在https://github.com/docker/swarmkit/issues/1605上看到
因此,對於最新版本的docker swarm,如果您運行以下命令:
$ docker stack deploy -c docker-compose.yml foobar
帶有--pid=host
時,您應該得到以下警告:
忽略不支持的選項:pid
如果必須使用此功能,請堅持使用docker compose。
如果您有興趣, https: //www.aquasec.com/wiki/display/containers/Docker+Swarm+101提供了有關Docker Swarm的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.