Докер для сети Windows

У меня проблемы с пониманием Docker для Windows и работы сети. В VirtualBox с мостовым адаптером и виртуальной машиной Ubuntu все просто работало - я мог нормально пропинговать виртуальную машину с моего хоста (и наоборот).

  • Как проверить связь с контейнером с любого устройства в моей сети?
  • И как пинговать другие контейнеры, не работающие на том же хосте?

Мой план...

должно было иметь несколько компьютеров под управлением Windows (не виртуальных машин), на каждой из которых был запущен один контейнер Docker (для формирования кластера хранения), и эти контейнеры должны были взаимодействовать друг с другом (возможно, запускать с использованием сети overlay, или для этого требуется swarm?). Мне также нужно поговорить с этим извне, что является единственной частью, которую я смог заставить работать, используя параметр docker run -p , чтобы открыть порты в нужном мне контейнере.

Чтобы немного проработать мой процесс мыслей, моя цель - создать хранилище значений ключей в стиле Amazon S3 (в частности, с использованием Riak KV), работающее на Linux. Поскольку для этого потребуется несколько компьютеров, на которых будет запущено программное обеспечение, мне показалось, что Docker может иметь такие преимущества, как простота установки и развертывания, а также среда для запуска программного обеспечения на основе Linux в Windows, к которому у меня в настоящее время есть легкий доступ.

Пара вещей, которые я тестировал ...

Если я запускаю два контейнера Ubuntu на одном хосте, используя мостовую сеть по умолчанию, они могут пинговать друг друга. ifconfig перечисляет локальный адаптер и адаптер eth0 с IP-адресом 172.17 ... Из этого не похоже, что мост - это то, что я ищу, так как мне нужно несколько хостов.

относительно небольшая сеть на одном хосте

Если я запускаю контейнер Ubuntu с --network host, я получаю намного больше от ifconfig, включая адаптеры br-xxxxxxxx и vethxxxxxx. Из документов,

добавляет контейнер в сетевой стек хостов

Это звучало полезно, но, возможно, я не понимаю. Я знаю, что Docker для Windows запускает MobyLinuxVM и использует адаптер и коммутатор Hyper-V, что означает хост? ПК с windows или эта виртуальная машина? При использовании --network host я все еще не могу проверить связь с контейнером или рабочий стол из контейнера.

Другие мысли...

Кажется, что стандартное использование Docker НЕ основано на Windows, поэтому мне не удалось найти столько ссылок. Сильно ли отличается мой вариант использования от обычного использования Docker? Может ли кто-нибудь указать на то, чего мне здесь не хватает?

Информация об адаптерах Hyper-V выглядит так, будто мне нужно изменить настройку сетевого адаптера в дополнение к тому, как я запускаю контейнеры? Я думаю, мне трудно понять, где искать между окнами, адаптером / коммутатором Hyper-V, ubuntu и докером.


person g3cko    schedule 07.09.2016    source источник
comment
Не стесняйтесь, дайте мне знать, если это как-то дублированный или плохо сформулированный вопрос, когда вы голосуете против ...   -  person g3cko    schedule 07.09.2016


Ответы (1)


Отличный вопрос. Я проголосовал за него, чтобы противостоять полученному вами голосу против. Вопрос написан хорошо, и я не вижу в нем никаких проблем. Возможно, они думали, что он не принадлежит StackOverflow и лучше подходит для ServerFault.

Вот несколько полезных пунктов:

  • Docker для Windows создает виртуальную машину Linux Hyper-V с именем MobyLinuxVM.
  • Виртуальные машины Hyper-V должны быть подключены к виртуальному коммутатору, чтобы иметь доступ к сети.
  • Docker для Windows создает виртуальный коммутатор Hyper-V Internal с именем DockerNAT
  • Ознакомьтесь с Что такое Hyper-V Описание виртуального коммутатора для получения подробной информации о internal типе виртуального коммутатора (вы уже связались с ним).

Докер Рой

  • Для использования сети overlay действительно требуется режим Docker Swarm (см .: SwarmKit)

Итог здесь:

Сценарий, который вы пытаетесь решить, не подходит для Docker для Windows. Docker для Windows предназначен для того, чтобы разработчики программного обеспечения могли писать, отлаживать и тестировать свои приложения на локальной виртуальной машине Linux с установленным Docker Engine. Вот об этом. Docker для Windows автоматизирует процесс настройки виртуальной машины Hyper-V, установки Linux, установки Docker Engine и предоставления к нему доступа из командной строки.

Предложенный вами сценарий в разделе «Мой план» не подходит для Docker для Windows. Вместо этого я бы предложил настроить кластер Docker Swarm Mode. Однако хранилище Docker становится немного сложнее. Вы также захотите изучить использование драйвера хранилища Docker, который обеспечивает совместное хранилище в вашем кластере Swarm хостов Docker. Есть очень популярный вариант под названием Flocker, разработанный ClusterHQ. Я бы рекомендовал изучить это как возможное решение.

Однако я также предлагаю пересмотреть свои цели и способы их достижения. Docker может быть даже неподходящим решением для общего хранилища.

Надеюсь, это поможет вашим усилиям.

person Trevor Sullivan    schedule 07.09.2016
comment
Большое спасибо за ответ и разъяснения! Я обновил свой исходный пост, чтобы немного подробнее проработать свой мыслительный процесс, но я вижу, что то, что я хочу делать, выходит за рамки стандартных целей Docker для Windows или против них. Также я рассмотрю Docker Swarm, чтобы узнать, может ли это соответствовать моим целям. - person g3cko; 07.09.2016
comment
Если кто-то может запустить Docker для Windows, то он может обойти проблему, связанную только с его вариантом использования разработчика, вручную создав другой компьютер Hyper-V Linux, установив на нем докер и вручную настроив сеть для доступа к портам виртуальной машины извне, верно ? - person Shaun; 18.05.2017