1

I am making docker-swarm project in local.

For now, I have nodes by docker for simulating like these yml at the bottom, each has node01 node02.

then now I want to use constraint

deploy:
  replicas: 1
  placement:
    constraints: [node.label.type == node01] #it occurs error though ,,,,

I am curious about what the 'node01' ? not container_id nor hostname.

And I want to use common setting as much as possible for production server.

In production server, I guess I install docker for each server and make network.

What property should be used for name ??

these are node on development

version: "3"
services:
  registry:
    container_name: registry
    image: registry:2.6
    ports:
      - 5000:5000
    volumes:
      - "./registry-data:/var/lib/registry"
  manager:
    container_name: man
    image: docker:18.05.0-ce-dind
    privileged: true
    ports:
      - 8009:8009 #phpmyadmin
      - 8000:8000 #django
      - 7000:80 # testecho
      - 8082:8082
      - 9009:9009 #visualizer
    depends_on:
      - registry
    expose:
      - 3375
    command: "--insecure-registry registry:5000"
    volumes:
      - "./stack:/stack"
  node01:
    container_name: node01
    image: docker:18.05.0-ce-dind
    privileged: true
    tty: true
    depends_on:
      - manager
      - registry
    expose:
      - 7946
      - 7946/udp
      - 4789/udp
    command: "--insecure-registry registry:5000"
  node02:
    container_name: node02
    image: docker:18.05.0-ce-dind
    privileged: true
    tty: true
    depends_on:
      - manager
      - registry
    expose:
      - 7946
      - 7946/udp
      - 4789/udp
    command: "--insecure-registry registry:5000"

docker node ls

aunlpbglv7zds5rxsmz9p3nvz     7ff3ff1fad0f        Ready               Active                                  18.05.0-ce
b46xctenvco15ps51477q8pjt     68e0dafdd817        Ready               Active                                  18.05.0-ce
vr70iclc0xorxvljhg62s7onw *   a5c27fe8bd38        Ready               Active              Leader              18.05.0-ce

then label it like this .

docker node update --label-add name=node01 7ff3ff1fad0f
docker node update --label-add name=node02 68e0dafdd817

However only 7ff3ff1fad0f is available, if I can use something like Node01 to specify the node, its very useful and replayable.

whitebear
  • 755

1 Answers1

2
constraints: [node.label.type == node01]

That requires that you have configured a node label of type=node01 on one of your nodes with docker node update --label-add .... To specific a node hostname, you would use:

constraints: [node.hostname == node01]

The full list of constraints is documented here. You can also inspect your node list with docker node ls and docker node inspect ....

BMitch
  • 2,302
  • 11
  • 15