Как подключиться к открытым портам контейнера докера Windows с виртуальной машины Hyper-V? - PullRequest
0 голосов
/ 02 октября 2018

Когда я запускаю команду для запуска контейнера докера Windows и выставляю порты хосту, я могу пропинговать контейнер и подключаться к нему.Проблема в том, что теперь я хочу сделать это с виртуальной машины Hyper-V, подключенной к сети Ethernet хоста через виртуальный коммутатор.

В Hyper-V нет опций для мостового адаптера, только в Virtualbox.Сетевые драйверы контейнеров докера Windows по умолчанию также являются NAT, в отличие от мостов в контейнерах Linux.

Я пытался подключить сетевые драйверы Overlay к Docker Swarm, но это также не поддерживается в контейнерах Windows.Я также попытался добавить статические маршруты в таблицу маршрутизации Windows с использованием указанного сетевого назначения, масок подсетей и шлюзов, но там тоже не повезло.

Единственный вариант, который я не пробовал, - это сопоставление / переадресация портов, но я не очень разбираюсь в сетевых технологиях, и документация, которую я мог найти в Интернете для сопоставления портов Hyper-V, включает настройку NAT с виртуальными коммутаторами.Я не уверен, что попробовать дальше.

docker run --rm --name rabbitmqtest -p 15672:15672 -p 5672:5672 --ip 192.168.130.4
5 -t imgtest containerNetwork 

1 Ответ

0 голосов
/ 23 апреля 2019

В текущей версии Hyper-V создается коммутатор по умолчанию, подключенный к сети по умолчанию, который используется гостевыми виртуальными машинами для подключения к сети хоста через NAT.

Сведения о сети можно получить изгостевая виртуальная машина с помощью команды ipconfig.Например, текущий компьютер, который у меня есть:

IPv4 Address. . . . . . . . . . . : 192.168.131.236
Subnet Mask . . . . . . . . . . . : 255.255.255.240
Default Gateway . . . . . . . . . : 192.168.131.225

Шлюз по умолчанию - это в основном хост-машина, поэтому вы должны иметь возможность доступа к сопоставленным портам непосредственно на этом IP-адресе.

ДляНапример, на моей машине я также запускаю Elastic Stack в контейнере с портом Kibana, назначенным на 32771.

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                NAMES
9fa6fe19a911        sebp/elk:latest     "/usr/local/bin/star…"   16 minutes ago      Up 16 minutes       0.0.0.0:32772->5044/tcp, 0.0.0.0:32771->5601/tcp, 0.0.0.0:32770->9200/tcp, 0.0.0.0:32769->9300/tcp   elk

Чтобы получить доступ к Kibana с гостевой виртуальной машины, я просто перехожу к http://192.168.131.225:32771/

В вашем случае вы должны иметь доступ к веб-интерфейсу RabbitMQ из контейнера докера из гостевой виртуальной машины Hyper-V по адресу http://192.168.<your gateway>:15672/

Редактировать: Выможет также потребоваться удалить конкретную привязку IP-адреса, чтобы порты отображались на все интерфейсы, включая сеть по умолчанию Hyper-V.

Примечание: Hyper-V также поддерживает внутренние иОбщие (мостовые) сети, которые также могут использоваться аналогичным образом.Более ранние версии Hyper-V не имели NAT по умолчанию (но вы могли использовать Windows Internet Connection Sharing для создания NAT).

...