Estoy creando un proyecto Docker-Swarm en local.
Por ahora, tengo nodos por ventana acoplable para simular como estos yml en la parte inferior, cada uno tiene node01
node02
.
entonces ahora quiero usar restricción
deploy:
replicas: 1
placement:
constraints: [node.label.type == node01] #it occurs error though ,,,,
Tengo curiosidad acerca de qué es el 'nodo01'. ni contenedor_id ni nombre de host.
Y quiero utilizar la configuración común tanto como sea posible para el servidor de producción.
En el servidor de producción, supongo que instalo Docker para cada servidor y creo la red.
¿Qué propiedad se debe utilizar para el nombre?
estos son nodos en el desarrollo
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
luego etiquételo así.
docker node update --label-add name=node01 7ff3ff1fad0f
docker node update --label-add name=node02 68e0dafdd817
Sin embargo, solo 7ff3ff1fad0f
está disponible si puedo usar algo como Node01
especificar el nodo, es muy útil y reproducible.
Respuesta1
constraints: [node.label.type == node01]
Eso requiere que haya configurado una etiqueta de nodo type=node01
en uno de sus nodos con docker node update --label-add ...
. Para especificar un nombre de host de nodo, usaría:
constraints: [node.hostname == node01]
La lista completa de restricciones esdocumentado aquí. También puedes inspeccionar tu lista de nodos con docker node ls
y docker node inspect ...
.