Это как-то продолжение этого ответа о множестве доков-докеров.
Они используют следующий скрипт для создания второго 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
Есть ли способ изменить эти порты? (Так как это может быть причиной)