Сетевое взаимодействие контейнеров Windows
Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016
Внимание
См. ссылку на Сеть контейнеров Docker для общих команд сети Docker, параметров и синтаксиса. За исключением случаев, описанных в неподдерживаемых функциях и сетевых параметрах, все команды сети Docker поддерживаются в Windows с тем же синтаксисом, что и в Linux. Однако сетевые стеки Windows и Linux отличаются, поэтому некоторые команды сети Linux (например, ifconfig
не поддерживаются в Windows).
Базовая сетевая архитектура
В этом разделе представлен обзор создания и управления сетями узлов Docker в Windows. Контейнеры Windows работают аналогично виртуальным машинам в отношении сети. Каждый контейнер имеет виртуальный сетевой адаптер (vNIC), подключенный к виртуальному коммутатору Hyper-V (vSwitch). Windows поддерживает пять различных сетевых драйверов или режимов, которые можно создать с помощью Docker: nat, наложения, прозрачного, l2bridge и l2tunnel. В зависимости от инфраструктуры физической сети и требований к сети с несколькими узлами следует выбрать сетевой драйвер, который лучше всего подходит для ваших потребностей.
При первом запуске подсистемы Docker она создаст сеть NAT по умолчанию, nat, которая использует внутреннюю vSwitch и компонент Windows с именем WinNAT
. Если на узле есть уже существующие внешние виртуальные машины, созданные с помощью PowerShell или диспетчера Hyper-V, они также будут доступны Docker с помощью прозрачного сетевого драйвера и могут быть замечены при выполнении docker network ls
команды.
- Внутренний vSwitch — это тот, который не подключен непосредственно к сетевому адаптеру на узле контейнера.
- Внешний vSwitch — это тот, который напрямую подключен к сетевому адаптеру на узле контейнера.
Сеть NAT — это сеть по умолчанию для контейнеров, работающих в Windows. Все контейнеры, которые выполняются в Windows без каких-либо флагов или аргументов для реализации определенных сетевых конфигураций, будут присоединены к сети NAT по умолчанию и автоматически назначен IP-адрес из внутреннего диапазона IP-адресов сети "NAT". Префикс внутреннего IP-адреса по умолчанию, используемый для nat, — 172.16.0.0/16.
Управление сетью контейнеров с помощью сетевой службы узла
Сетевая служба узла (HNS) и служба вычислений узлов (HCS) работают вместе для создания контейнеров и подключения конечных точек к сети. Вы можете взаимодействовать с HNS через вспомогательный модуль PowerShell HNS.
Создание сети
- HNS создает виртуальный коммутатор Hyper-V для каждой сети.
- HNS создает пулы NAT и IP-адресов по мере необходимости
Создание конечной точки
- HNS создает сетевое пространство имен на конечную точку контейнера
- HNS/HCS помещает сетевой адаптер v(m)в сетевое пространство имен
- Порты HNS создаются (vSwitch)
- HNS назначает IP-адрес, сведения DNS, маршруты и т. д. (при условии сетевого режима) конечной точке
Создание политики
- Для сети преобразования сетевых адресов (NAT) по умолчанию HNS создает правила пересылки портов WinNAT и сопоставления с соответствующими правилами разрешения брандмауэра Windows.
- Для всех других сетей HNS использует виртуальную платформу фильтрации (VFP) для создания политики, которая включает балансировку нагрузки, списки управления доступом и инкапсуляцию. Дополнительные сведения об API HNS и схеме см. в api-интерфейсе службы вычислений узла (HCN) для виртуальных машин и контейнеров.
Неподдерживаемые функции и параметры сети
В настоящее время в Windows поддерживаются следующие параметры сети:
- Начиная с Windows Server 2022, контейнеры Windows имеют следующую поддержку сети IPv6:
- Контейнеры, подключенные к сетям l2bridge, поддерживают стек IPv6.
- Контейнеры, подключенные к прозрачным сетям, поддерживают обмен данными с помощью IPv6 с самостоятельными IP-адресами, но не поддерживают назначение IP-адресов HNS и другие сетевые службы, такие как балансировка нагрузки и списки управления доступом.
- Контейнеры Windows, подключенные к сети NAT и наложения, не поддерживают обмен данными по стеку IPv6.
- Зашифрованное взаимодействие с контейнером через IPsec.
- Сеть в режиме узла.
- Сеть на виртуализированной инфраструктуре Azure с помощью прозрачного сетевого драйвера.
Команда | Неподдерживаемый параметр |
---|---|
docker run |
--ip6 , --dns-option |
docker network create |
--aux-address , --internal , --ip-range --ipam-driver --ipam-opt --ipv6 --opt encrypted |