Docker:使用--placement pref在特定节点上运行服务

Docker:使用--placement pref在特定节点上运行服务,docker,docker-compose,dockerfile,docker-swarm,docker-machine,Docker,Docker Compose,Dockerfile,Docker Swarm,Docker Machine,你能帮我吗 我想用placement pref更新服务并在特定的节点上运行it任务 实际上我有3个节点(主机名): 经理:ip-172-31-16-167 工人-1:ip-172-31-30-215 工人-2:ip-172-31-24-172 我已经部署了服务“myapp_vote”,其中包含2个任务(副本),它们在Manager和Worker-1上运行,我想在Worker-1和Worker-2上运行这些任务,因此我执行以下命令: docker node update --label-add V

你能帮我吗

我想用placement pref更新服务并在特定的节点上运行it任务

实际上我有3个节点(主机名):

经理:ip-172-31-16-167

工人-1:ip-172-31-30-215

工人-2:ip-172-31-24-172

我已经部署了服务“myapp_vote”,其中包含2个任务(副本),它们在ManagerWorker-1上运行,我想在Worker-1Worker-2上运行这些任务,因此我执行以下命令:

docker node update --label-add Vote=true ip-172-31-30-215

docker node update --label-add Vote=true ip-172-31-24-172

docker service update --placement-pref-add 'spread=node.labels.Vote' myapp_vote
但是什么也没发生,这两个任务继续在Manager和Worker-1上运行

我尝试使用以下命令添加约束:

docker service update --constraint-add 'node.labels.Vote == true' myapp_vote
它起作用了,这两个任务开始在Worker-1Worker-2上运行


请检查是否可以执行相同的操作,但使用放置优先权

仅使用放置优先权无法执行此操作:

缺少用于传播的标签的节点仍将接收任务 作业。作为一个组,这些节点以相等的比例接收任务 由特定标签值标识的任何其他组。在一个 从某种意义上讲,缺少的标签与具有空标签的标签相同 它的附加值。如果服务应仅在具有 用于排列首选项的标签,首选项应为 与约束相结合