Docker для сети Windows

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

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

мой план...

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

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

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

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

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

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

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

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

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

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

чтение о адаптерах Hyper-V похоже, что мне нужно изменить настройку сетевого адаптера в дополнение к тому, как я запускаю контейнеры? Я думаю, мне трудно понять, где искать между windows, Hyper-V adapter/switch, ubuntu и docker.

1 ответов


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

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

  • Docker для Windows создает виртуальную машину Hyper-V Linux с именем MobyLinuxVM.
  • Hyper-V VMs должен быть подключен к виртуальному коммутатору, чтобы иметь сеть доступ
  • 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. Docker storage становится немного сложнее,чем это. Вы также захотите изучить использование драйвера хранилища Docker,который позволяет использовать общее хранилище в кластере Docker. Есть один очень популярный под названием Flocker, разработанный ClusterHQ. Я бы рекомендовал изучить это как возможное решение.

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

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