생산 및 개발에 대한 제약 조건의 Docker-swarm 사용

생산 및 개발에 대한 제약 조건의 Docker-swarm 사용

로컬에서 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 ....

관련 정보