Оверлейная сеть в режиме Swarm без Docker Machine

В настоящее время у меня есть три хоста (docker1, docker2 и docker3), которые я не настроил с помощью Docker Machine, на каждом из которых работает демон Docker v1.12-rc4.

Я запускаю docker swarm init на docker1, что, в свою очередь, выводит команду docker swarm join, которую я запускаю как на docker2, так и на docker3. В этот момент запуск docker info на каждом хосте содержит строку Swarm: active.

Именно в этот момент поведение, кажется, отличается от того, что я имел обыкновение получать с автономным контейнером Swarm. В частности, запуск docker network ls покажет мне сети только на локальном хосте, а при попытке создать оверлейную сеть рабочие узлы, похоже, не знают об этом (т.е. она не отображается на их docker network ls.)

Я чувствую, что упустил некоторую важную информацию, касающуюся работы режима Swarm, а не контейнера Swarm.

Каков правильный способ настройки такого кластера без Docker Machine в Docker 1.12 при использовании функции оверлейной сети?


person Victor Schubert    schedule 18.07.2016    source источник


Ответы (3)


Я тоже думал, что это проблема, когда я впервые начал использовать его.

Это работает немного по-другому в 1.12rc4 — когда вы развертываете контейнер в своем рое с подключенной к нему сетью, он должен затем создать сеть и на других узлах.

Надеюсь это поможет!

person Andrew Roberts    schedule 18.07.2016

Проблема

Вы используете команду docker (используется для связи с вашим локальным демоном Docker), а не команду "swarm" (используется для связи с мастером Swarm).

Решение

Это зависит от команды, которую вы использовали для запуска Swarm. Полное пошаговое руководство (включая сведения о том, как развернуть оверлейную сеть) подробно описано в этот ответ. Я уверен, что чтение этого поможет вам;)

person Auzias    schedule 18.07.2016
comment
Я уже прошел по указанной вами ссылке. Хотя это работает, это не решает мою проблему с использованием режима Swarm, представленного в версии 1.12. Или я неправильно понял функцию? - person Victor Schubert; 18.07.2016
comment
Swarm можно рассматривать как демон Docker. С помощью команды docker установите связь через сокет UNIX (по умолчанию) с локальным демоном Docker. Насколько мне известно, с помощью этой команды вы не можете создать роевую оверлейную сеть. Не могли бы вы добавить ссылку в вопросе о процессе, которому вы следуете, пожалуйста. - person Auzias; 18.07.2016

С сетью swarm сеть распространяется только на рабочие узлы по мере необходимости. Если вы создаете службу, используя эту сеть, и она запланирована на этом рабочем узле, сеть будет отображаться в файле docker network ls.

В грядущем выпуске 1.13 вы можете получить сеть, которая ведет себя аналогично не роевым сетям, выполнив docker network create --attachable .... Эта сеть будет действительна как для служб, так и для обычных контейнеров и будет доступна всем членам кластера. Начиная с версии 1.13.0-rc2 они не отображаются в выводе docker network ls.

person programmerq    schedule 24.11.2016