Я создаю проект docker-swarm локально.
На данный момент у меня есть узлы Docker для моделирования, подобные этим yml внизу, каждый из которых имеет node01
node02
.
то теперь я хочу использовать ограничение
deploy:
replicas: 1
placement:
constraints: [node.label.type == node01] #it occurs error though ,,,,
Мне интересно, что такое «node01»? Не container_id и не hostname.
И я хочу максимально использовать общие настройки для рабочего сервера.
На производственном сервере я, наверное, устанавливаю Docker для каждого сервера и создаю сеть.
Какое свойство следует использовать для имени?
это узел на разработке
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
затем обозначьте это вот так.
docker node update --label-add name=node01 7ff3ff1fad0f
docker node update --label-add name=node02 68e0dafdd817
Однако 7ff3ff1fad0f
доступно только то, что я могу использовать что-то вроде Node01
указания узла, это очень полезно и воспроизводимо.
решение1
constraints: [node.label.type == node01]
Для этого требуется, чтобы вы настроили метку узла type=node01
на одном из ваших узлов с помощью docker node update --label-add ...
. Чтобы указать имя хоста узла, вы должны использовать:
constraints: [node.hostname == node01]
Полный список ограничений:задокументировано здесь. Вы также можете проверить свой список узлов с помощью docker node ls
и docker node inspect ...
.