Как использовать WinNAT для виртуальных машин Hyper-V и контейнеров Docker одновременно

Я пытаюсь настроить домашний сервер для размещения контейнеров виртуальных машин и Docker.

Никаких проблем на виртуальных машинах, работающих в части Hyper-V:

  1. Создайте новый внутренний коммутатор (NatSwitch).
  2. Установите конфигурацию IP: New-NetIPAddress -IPAddress 10.0.75.1 -PrefixLength 24 -InterfaceIndex <ifIndex>
  3. Создайте конфигурацию NAT:New-netNat -Name SharedNat -InternalIPInterfaceAddressPrefix 10.0.0.0/17
  4. Создайте перенаправления:Add-NetNatStaticMapping -NatName $NatName -Protocol TCP -ExternalPort 80 -InternalPort 80 -InternalIPAddress 10.0.75.2 -ExternalIPAddress 0.0.0.0

Теперь я заявлю, что на данный момент NAT работает как положено, виртуальная машина за ним может связаться с внешним миром, а внешний мир может инициировать контакт с виртуальной машиной только через один из перенаправленных портов.

Теперь я пытаюсь настроить докер так, чтобы я мог использовать его одновременно, продолжая использовать его функциональность NAT (я пытаюсь избежать «прозрачной» сети докера, чтобы не засорять мою сеть контейнерами).

Обратите внимание, что я нашел инструкции на веб-сайте Microsoft: https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network, я вернусь. к ним позже.

Потому что сначала мне нужно было установить докер. Следуя этим инструкциям: https://learn.microsoft.com/fr-fr/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce#windows-server-1, все установлено, пора вернуться к инструкции по настройке NAT, приведенные ранее.

Небольшое резюме:

  • 1 внешний коммутатор Hyper-V (не должен влиять, но включен для полноты работы)
  • 1 внутренний коммутатор Hyper-V, настроенный на 10.0.75.1/24 (с подключенной к нему одной виртуальной машиной с IP 10.0.75.2)
  • 1 Nat настроен на 10.0.0.0/17

Насколько я понял, мне нужно было заставить докера использовать IP-адреса для своей собственной сети NAT в диапазоне 10.0.76.0/24. Это было сделано путем добавления"fixed-cidr":"10.0.76.0/24"вC:\ProgramData\docker\config\daemon.json

Но затем при запуске докера я получаю следующее сообщение об ошибке в журнале событий:

фатальное: не удалось запустить демон: Ошибка инициализации сетевого контроллера: Ошибка создания сети по умолчанию: сбой во время hnsCallRawОтвет: Ошибка hnsCall в Win32: Вы не подключены, поскольку в сети существует повторяющееся имя. Если вы присоединяетесь к домену, перейдите в раздел «Система» на панели управления, чтобы изменить имя компьютера, и повторите попытку. Если вы присоединяетесь к рабочей группе, выберите другое имя рабочей группы. (0x34)

Что я пропустил?

Если это потенциально может повлиять на решение, я планирую сделать этот сервер менеджером группы докеров с присоединением виртуальной машины Linux для размещения контейнеров Linux.

0 ответов

Другие вопросы по тегам