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