我正在本地制作 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 ...
。