Сетевые подключения контейнеров WindowsWindows container networking

Важно!

Сведения об основных сетевых командах, параметрах и синтаксисе Docker см. в разделе Сетевые подключения контейнеров Docker.Please reference Docker Container Networking for general docker networking commands, options, and syntax. За исключением любых случаев, описанных в разделе неподдерживаемые функции и сетевые параметры, все сетевые команды DOCKER поддерживаются в Windows с тем же синтаксисом, что и в Linux.With the exception of any cases described in unsupported features and network options, all Docker networking commands are supported on Windows with the same syntax as on Linux. Однако сетевые стеки Windows и Linux отличаются друг от друга, и поэтому вы обнаружите, что некоторые сетевые команды Linux (например, ifconfig) не поддерживаются в Windows.However, the Windows and Linux network stacks are different, and as such you will find that some Linux network commands (for example, ifconfig) are not supported on Windows.

Базовая сетевая архитектураBasic networking architecture

В этом разделе приведено описание того, каким образом Docker создает и администрирует сети узлов в Windows.This topic provides an overview of how Docker creates and manages host networks on Windows. В отношении сетевых подключений контейнеры Windows функционируют аналогично виртуальным машинам.Windows containers function similarly to virtual machines in regards to networking. У каждого контейнера есть виртуальный сетевой адаптер (vNIC), который подключен к виртуальному коммутатору Hyper-V (vSwitch).Each container has a virtual network adapter (vNIC) which is connected to a Hyper-V virtual switch (vSwitch). Операционная система Windows поддерживает пять различных сетевых драйверов (или по-другому "режимов"), которые можно создать через Docker: nat, overlay, transparent, l2bridge и l2tunnel.Windows supports five different networking drivers or modes which can be created through Docker: nat, overlay, transparent, l2bridge, and l2tunnel. В зависимости от особенностей физической сетевой инфраструктуры и от того, должна ли сеть быть одно- или многоузловой, необходимо выбрать сетевой драйвер, который наилучшим образом соответствует вашим потребностям.Depending on your physical network infrastructure and single- vs multi-host networking requirements, you should choose the network driver which best suits your needs.

текст

При первом запуске подсистемы Docker происходит создание сети NAT по умолчанию ("nat"), которая использует внутренний виртуальный коммутатор и компонент Windows под названием WinNAT.The first time the docker engine runs, it will create a default NAT network, 'nat', which uses an internal vSwitch and a Windows component named WinNAT. При наличии на узле других внешних виртуальных коммутаторов, созданных с помощью оболочки командной строки PowerShell или диспетчера Hyper-V, они также будут доступны подсистеме Docker посредством сетевого драйвера transparent и будут отображаться при запуске команды docker network ls.If there are any pre-existing external vSwitches on the host which were created through PowerShell or Hyper-V Manager, they will also be available to Docker using the transparent network driver and can be seen when you run the docker network ls command.

текст

  • Внутренний vSwitch — это не подключенное напрямую к сетевому адаптеру на узле контейнера.An internal vSwitch is one that isn't directly connected to a network adapter on the container host.
  • Внешняя vSwitch — это тот, который напрямую подключен к сетевому адаптеру на узле контейнера.An external vSwitch is one that is directly connected to a network adapter on the container host.

текст

Сеть "nat" — это сеть по умолчанию для контейнеров под управлением Windows.The 'nat' network is the default network for containers running on Windows. Все контейнеры, которые работают под управлением Windows без каких-либо флагов или аргументов, использующихся для реализации конкретной сетевой конфигурации, будут подключены к сети "nat" по умолчанию и им будет автоматически присвоен IP-адрес из диапазона IP-адресов внутреннего префикса сети "nat".Any containers that are run on Windows without any flags or arguments to implement specific network configurations will be attached to the default 'nat' network, and automatically assigned an IP address from the 'nat' network's internal prefix IP range. Для "nat" по умолчанию используется следующий внутренний префикс IP-адреса: 172.16.0.0/16.The default internal IP prefix used for 'nat' is 172.16.0.0/16.

Управление сетью контейнера с помощью сетевой службы узловContainer Network Management with Host Network Service

Сетевая служба узлов (HNS) и вычислительная служба узлов (HCS) совместно используются для создания контейнеров и подключения конечных точек к сети.The Host Networking Service (HNS) and the Host Compute Service (HCS) work together to create containers and attach endpoints to a network.

Создание сетиNetwork Creation

  • Служба HNS создает виртуальный коммутатор Hyper-V для каждой сетиHNS creates a Hyper-V virtual switch for each network
  • Служба HNS создает преобразование сетевых адресов (NAT) и пулы IP-адресов по мере необходимостиHNS creates NAT and IP pools as required

Создание конечных точекEndpoint Creation

  • Служба HNS создает пространство имен сети для каждой конечной точки контейнераHNS creates network namespace per container endpoint
  • Служба HNS/HCS размещает сетевой адаптер виртуальной машины в пространстве имен сетиHNS/HCS places v(m)NIC inside network namespace
  • Служба HNS создает порты виртуального коммутатораHNS creates (vSwitch) ports
  • Служба HNS назначает конечной точке IP-адрес, сведения DNS, маршруты и т. д. (в зависимости от сетевого режима)HNS assigns IP address, DNS information, routes, etc. (subject to networking mode) to the endpoint

Создание политикиPolicy Creation

  • Сеть NAT по умолчанию: служба HNS создает правила перенаправления портов WinNAT/сопоставления с соответствующими разрешающими правилами брандмауэра Windows.Default NAT network: HNS creates WinNAT port forwarding rules / mappings with corresponding Windows Firewall ALLOW rules
  • Остальные сети: служба HNS использует виртуальную платформу фильтрации для создания политикиAll other networks: HNS utilizes the Virtual Filtering Platform (VFP) for policy creation
    • Сюда входит следующее: балансировка нагрузки, списки управления доступом, инкапсуляция и т. д.This includes: load balancing, ACLs, encapsulation, etc.
    • Найдите наши API-интерфейсы и схемы для HNS, опубликованные здесьLook for our HNS APIs and schema published here

текст

Неподдерживаемые функции и сетевые параметрыUnsupported features and network options

В настоящее время в Windows не поддерживаются следующие сетевые параметры:The following networking options are currently NOT supported on Windows:

  • Контейнеры Windows, подключенные к сетям l2bridge, NAT и оверлея, не поддерживают обмен данными через стек IPv6.Windows containers attached to l2bridge, NAT, and overlay networks do not support communicating over the IPv6 stack.
  • Взаимодействие зашифрованного контейнера через IPsec.Encrypted container communication via IPsec.
  • Поддержка прокси-сервера HTTP для контейнеров.HTTP proxy support for containers.
  • Сеть в режиме узлаHost mode networking
  • Сетевые подключения в виртуализованной инфраструктуре Azure с помощью драйвера прозрачной сети.Networking on virtualized Azure infrastructure via the transparent network driver.
КомандаCommand Неподдерживаемый параметрUnsupported option
docker run --ip6, --dns-option--ip6, --dns-option
docker network create --aux-address, --internal, --ip-range, --ipam-driver, --ipam-opt, --ipv6, --opt encrypted--aux-address, --internal, --ip-range, --ipam-driver, --ipam-opt, --ipv6, --opt encrypted