我可以在 docker 堆栈文件的约束中使用两个主机名吗?

pau*_*590 2 docker docker-swarm docker-stack

我有一个堆栈文件,我试图在其中告诉它使用我提供的两个主机名中的一个。这可能吗?该服务并非以这些变量启动,但是,当删除至少其中一个变量时,它就可以工作。感谢您的帮助!

堆栈文件:

deploy:
    placement:
        constraints:
            - node.hostname == myhost1
            - node.hostname == myhost2
Run Code Online (Sandbox Code Playgroud)

Met*_*tin 6

放置约束是 AND 链接的。

不过,您可以向两台主机添加节点标签,并使用节点标签作为放置约束。我使用标签“mycustomlabel=true”来说明用法。

在管理节点上:

docker node update --label-add mycustomlabel=true myhost1
docker node update --label-add mycustomlabel=true myhost2
Run Code Online (Sandbox Code Playgroud)

然后使用节点标签作为放置约束:

deploy:
    placement:
        constraints:
            - node.labels.mycustomlabel == true
Run Code Online (Sandbox Code Playgroud)

当然,标签可以有您选择的键=值。一个节点可以有多个节点标签。