簡體   English   中英

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

[英]docker host pid mode doesn't work in swarm mode

我希望container與主機OS共享PID名稱空間,並且在docker找到host PID mode

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_nameswarm模式下不起作用。)。

container_name

.....

.....

注意:在以(版本3)撰寫文件以群集模式部署堆棧時,將忽略此選項。

我的Docker 17.09.0-ce環境是Docker 17.09.0-ce ,在Ubuntu16Ubuntu16 docker-compose 1.17.0 Ubuntu16 為什么pid模式在swarm模式下不起作用?

最后,我在github上打開了一個問題,並得到了答案。

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

通過在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM