Я не могу подключить своего работника докеров к диспетчеру докеров.
Я создал несколько экземпляров aws EC2 и сделал один из них менеджером docker swarm init --listen-addr 0.0.0.0:2377 и пытаюсь подключить его через другие экземпляры EC2 docker swarm join 0.0.0.0:2377 в качестве рабочего, но это выдает ошибку.
"Error response from daemon: Timeout was reached before node joined`.
The attempt to join the swarm will continue in the background".
Мне нужно, чтобы мой менеджер роя докеров перечислил docker node ls все узлы, включая менеджера и рабочих.





Вам нужно использовать реальный IP-адрес в команде docker swarm join.
«0.0.0.0» — это не настоящий IP-адрес, это псевдоним для «всех (локальных) IP-адресов», к которому вы не можете подключиться.
Тогда, пожалуйста, не используйте 0.0.0.0, это сбивает с толку пользователей :)
Находятся ли ваши инстансы EC2 в одном и том же облаке VPC? Если это так, вы должны иметь возможность использовать внутренний адрес.
1.запустите команду на главном узле: рабочий токена присоединения к docker swarm
2.и затем запустите команду, полученную на предыдущем шаге
пример:
root@ubuntu:~# docker swarm join-token worker Чтобы добавить рабочего в этот рой, выполните следующую команду:
docker swarm join --token SWMTKN-1-0akniaryx9xg8mmb08rbd42kwntigfkyk33vt7ac0wrehn58mk-5voo7jfl3kl40yl4cmvf16lgt 10.0.10.4:2377
root@ubuntu:~#
запустить на рабочем узле: docker swarm join --token SWMTKN-1-0akniaryx9xg8mmb08rbd42kwntigfkyk33vt7ac0wrehn58mk-5voo7jfl3kl40yl4cmvf16lgt 10.0.10.4:2377
Чтобы решить эту проблему, мне нужно было открыть соответствующие порты как из экземпляров Docker Worker, так и из экземпляров Docker Manager.
Я обнаружил некоторую информацию, решая этот вопрос,
TCP-порт 2377 — это порт по умолчанию, используемый для связи, поэтому добавьте собственное правило tcp для порта 2377 в группу безопасности aws EC2.
TCP-порт 2376 для безопасного взаимодействия с клиентом Docker. Этот порт необходим для работы Docker Machine. Docker Machine используется для организации хостов Docker.
TCP-порт 2377 Этот порт используется для связи между узлами Docker Swarm или кластера. Его нужно открывать только на узлах менеджера.
TCP и UDP порт 7946 для связи между узлами (обнаружение контейнерной сети).
UDP-порт 4789 для оверлейного сетевого трафика (входная сеть контейнера).
Пожалуйста, обратите внимание: Помимо этих портов, порт 22 (для SSH-трафика) и любые другие порты, необходимые для запуска определенных служб в кластере, должны быть открыты.
Я уже использовал реальный общедоступный IP-адрес моего экземпляра ec2 для подключения. Я просто хочу сохранить это в тайне, поэтому я написал 0.0.0.0