Docker-swarm 使用約束進行生產和開發

Docker-swarm 使用約束進行生產和開發

我正在本地製作 docker-swarm 專案。

現在,我有 docker 的節點用於模擬,就像底部的這些 yml 一樣,每個節點都有node01 node02.

那現在我想使用約束

deploy:
  replicas: 1
  placement:
    constraints: [node.label.type == node01] #it occurs error though ,,,,

我很好奇「node01」是什麼?不是container_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 ...

相關內容