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

How to create a docker service on a specific node but scale it to other nodes too in the swarm?

我是 docker 的新手,因此我有这种幼稚的疑问。我想要一种方法,每当我创建服务时,它都会在特定节点上创建,但如果我缩放它,它应该缩放到 docker 群中存在的其他节点。 我知道 --mode global 和 --constraints node.hostname!=node-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

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