如何在特定节点上创建docker服务,但在swarm中也将其扩展到其他节点?

时间:2017-08-02 10:29:16

标签: docker containers docker-swarm

我是码头工的新手,因此我心中有这种天真的怀疑。我想要一种方法,每当我创建一个服务时,它就会在特定节点上创建,但如果我扩展它,它应该扩展到docker swarm中太多的其他节点。 我知道--mode global和--constraints node.hostname!= node-1。但这并不能解决我的问题。如果我的问题不清楚,我会尝试以更好的方式解释它。

1 个答案:

答案 0 :(得分:1)

您需要使用placement-pref并拥有两个组,一个用于要运行它的节点,另一个用于另一个组中的其他节点。

$ docker service create \
  --replicas 1 \
  --name myservice \
  --placement-pref 'spread=node.labels.main_machine' \
  --placement-pref 'spread=node.labels.extended_machines' \
  <yourimage>

现在你的第一个会继续main_machine,而缩放的那个会转到extended_machines

查看网址https://docs.docker.com/engine/reference/commandline/service_create/#specify-service-placement-preferences-placement-pref