При развертывании стека Docker служба не может быть развернута на другом узле в кластере Swarm. - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь развернуть приложение в нескольких экземплярах. На главном узле. после развернутого приложения работает единственный мастер-узел. не может развернуть службу другого узла в кластере docker. здесь мой docker -компонентный файл

version: "3"

services:

  mydb:
    image: localhost:5000/mydb-1
    environment:
      TZ: "Asia/Colombo"
    ports:
      - 9042:9042
    volumes:
      - /root/data/cdb:/var/lib/cassandra
      - /root/logs/cdb:/var/log/cassandra

команда docker service scale mydb-1_mydb=5

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                                 NAMES
7fxxxxxxxx7        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 5 seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.2.q77i258vn2xynlgein9s7tdpb
34fcxxxx14bd        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 4 seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.1.s2mzitj8yzb0zo7spd3dmpo1j
9axxxx1efb        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 8 seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.3.zgyev3p4qdg7hf7h67oeedutr
f14xxxee59        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 2 seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.4.r0themodonzzr1izdbnppd5bi
e3xxx16d        localhost:5000/mydb-1:latest   "docker-entrypoint.sh"   16 seconds ago      Up 6  seconds        7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp           mydb-1_mydb.5.bdebi4

все работает только мастер-узел. Кто-нибудь знает проблему?

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Спасибо. Я нахожу проблему исправленной.

volumes:
      - /root/data/cdb:/var/lib/cassandra
      - /root/logs/cdb:/var/log/cassandra

Если вы связываете монтирование пути хоста в контейнеры вашей службы, путь должен существовать на каждом узле роя.

docker service scale zkr_zkr=2

после того, как служба масштабирования запустила мой узел

root@beta-node-1:~# docker ps
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                                    NAMES
f9bxxx15861        localhost:5000/zookeeper:latest   "/docker-entrypoint.…"   40 minutes ago      Up 40 minutes       2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp   zkr_zkr.3.qpr8qp5y
01dxxxx64bc        localhost:5000/zookeeper:latest   "/docker-entrypoint.…"   40 minutes ago      Up 40 minutes       2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp   zkr_zkr.1.g2uee5j
0 голосов
/ 28 января 2020

Ваше изображение создается локально с именем, которое не может быть разрешено в других узлах (localhost:5000/mydb-1). В рое изображения должны быть отправлены в реестр, и этот реестр должен быть доступен для всех узлов. Вы можете запустить собственную службу реестра на своем собственном узле, есть docker образ или вы можете создать концентратор sh до docker. Если реестр является частным, вам также необходимо выполнить docker login на узле, выполняющем развертывание стека, и включить учетные данные реестра в это развертывание, например,

docker stack deploy -c compose.yml --with-registry-auth stack-name
...