docker swarm init не удалось выбрать ошибку IP-адреса

экспериментируя с Docker Swarm, и я сделал это:

docker-machine create -d virtualbox node-1
docker-machine create -d virtualbox node-2
docker-machine create -d virtualbox node-3

eval $(docker-machine env node-1)

docker swarm init 
    --secret my-secret 
    --auto-accept worker 
    --listen-addr $(docker-machine ip node-1):2377

последняя команда (docker swarm init) возвращает эту ошибку, которую нигде не найти в Google:

Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses

Я понятия не имею, что происходит. Кто-нибудь знает, как отлаживать? Спасибо!

5 ответов


обновление 2017-05-24:

предыдущий ответ был для раннего состояния режима Роя. С тех пор параметры secret и auto-accept были удалены, и добавлена опция advertise-addr. Теперь это можно сделать с помощью:

docker swarm init \
  --advertise-addr $(docker-machine ip node-1)

порт по умолчанию 2377. Вы также можете использовать имя сетевого интерфейса вместо IP-адреса, и swarm будет искать IP-адрес на этом интерфейсе. Адрес прослушивателя по-прежнему является опцией, но по умолчанию слушайте все интерфейсы, которые обычно являются предпочтительным решением.


оригинальный ответ:

Я еще не делал этого с Докером-машиной, но я знаю, что новый Рой очень чувствителен к записям в /etc/hosts. Убедитесь, что ваш ip и имя хоста находятся в этом файле и только в одном месте (также не сопоставлены с loopback или любыми другими внутренними адресами). Начиная с RC3, они также используют адрес прослушивателя для адреса рекламы, поэтому убедитесь, что на это имя хоста или ip могут ссылаться все узлы в рое (довольно уверен, что исправление придет для этого, если еще не здесь).

чтобы свести к минимуму риск проблем между версиями клиента и сервера, я бы также запускал команды непосредственно внутри virtualbox, а не с переменными среды docker-machine.


получил ту же ошибку при использовании docker с envs для подключения к машине, созданной докером. После docker-machine ssh <machine-name> и docker swarm init локально на машине я получил сообщение о --advertise-addr. Локальная команда работали.


согласно руководству докеров:https://docs.docker.com/get-started/part4/#create-a-cluster

получение ошибки о необходимости использования --advertise-addr?

скопируйте IP-адрес виртуальной машины, запустив docker-machine ls, затем снова запустите команду docker swarm init, используя этот IP и указание порта 2377 (порт для соединений swarm) с --advertise-addr. Например:

докер-машина ssh myvm1 "docker swarm init-реклама-addr 192.168.99.100: 2377"


сначала найдите общедоступный IP-адрес вашего компьютера в вашей сети

ifconfig

выберите физический, как 192.168.1.x (не docker0, то есть виртуальный IP-адрес, внутренний для Docker)

docker swarm init --advertise-addr 192.1.68.1.x

(по умолчанию используется порт 2377)


Регистрация docker --version и убедитесь, что клиент и сервер находятся в одной версии. Если они отличаются, используйте следующую команду, чтобы вытащить версию boot2docker, которая соответствует клиенту docker на вашем компьютере.

docker-machine create --driver virtualbox --virtualbox-boot2docker-url https://github.com/boot2docker/boot2docker/releases/download/v1.12.0-rc4/boot2docker-experimental.iso manager1