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 может даже не быть правильным решением для общего общего хранилища.
надеюсь, это поможет вашим усилиям.