Многократный докер Дэймон приводит к проблеме роя - PullRequest
0 голосов
/ 20 мая 2019

Это как-то продолжение этого ответа о множестве доков-докеров.

Они используют следующий скрипт для создания второго Docker Deamon:

#!/bin/sh
## name: altdocker.sh
set -e -x

: ${bridge=altdocker}
: ${base=$HOME/$bridge}

# Set up bridge network:
if ! ip link show $bridge > /dev/null 2>&1
then
   sudo ip link add name $bridge type bridge
   sudo ip addr add ${net:-"10.20.30.1/24"} dev $bridge
   sudo ip link set dev $bridge up
fi

sudo dockerd \
  --bridge=$bridge \
  --data-root=$base.data \
  --exec-root=$base.exec \
  --host=unix://$base.socket \
  --pidfile=$base.pid

Теперь я установил DOCKER_HOST на созданный сокет unix. Я инициализирую рой докеров с docker swarm init абсолютно без проблем. Однако, как только я создаю стек с docker stack deploy -c myfile.yaml, у меня возникают проблемы:

  • Разрешение DNS не работает (служба не может вызвать другую имя хоста, однако с ip контейнера я могу пинговать)
  • Соединение с Интернетом действительно медленное по сравнению с соединением внутри контейнеров стандартного докера deamon.

Обновление

Глядя немного глубже, я увидел в документации конфигурацию, которую следует включить, чтобы использовать режим роя:

  • Порт 7946 TCP / UDP для обнаружения контейнерной сети.
  • Порт 4789 UDP для входной сети контейнера.

Я понял, потому что я увидел сообщение об ошибке от dockerd:

 ERRO[2019-05-21T14:46:02.807800662+02:00] error in agentInit: failed to create memberlist: Could not set up network transport: failed to obtain an address: Failed to start TCP listener on "0.0.0.0" port 7946: listen tcp 0.0.0.0:7946: bind: address already in use 

Есть ли способ изменить эти порты? (Так как это может быть причиной)

...