로컬에서 docker-swarm 프로젝트를 만들고 있습니다.
지금은 하단에 이러한 yml과 같은 시뮬레이션을 위한 docker별 노드가 있으며 각 노드에는 node01
node02
.
이제 제약조건을 사용하고 싶습니다.
deploy:
replicas: 1
placement:
constraints: [node.label.type == node01] #it occurs error though ,,,,
'node01'이 무엇인지 궁금합니다. 컨테이너 ID나 호스트 이름이 아닙니다.
그리고 프로덕션 서버에서는 최대한 공통설정을 사용하고 싶습니다.
프로덕션 서버에서는 각 서버마다 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 ...
.