Compartir a través de


Controladores de red de contenedores de Windows

Se aplica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

Además de aprovechar la red 'nat' predeterminada creada por Docker en Windows, los usuarios pueden definir redes de contenedores personalizadas. Las redes definidas por el usuario se pueden crear mediante el comando de la CLI docker network create -d <NETWORK DRIVER TYPE> <NAME> de Docker. En Windows, están disponibles los siguientes tipos de controladores de red:

Controlador de red NAT

Los contenedores conectados a una red creada con el controlador "nat" se conectarán a un conmutador interno de Hyper-V y recibirán una dirección IP del prefijo IP especificado por el usuario (--subnet). Se admite la asignación o el reenvío de puertos desde el host del contenedor a los puntos de conexión del contenedor.

Sugerencia

Es posible personalizar la subred usada por la red "nat" predeterminada a través de la fixed-cidr configuración del archivo de configuración del demonio de Docker.

Nota:

Las redes NAT creadas en Windows Server 2019 (o superior) ya no se conservan después del reinicio.

Creación de una red NAT

Para crear una red NAT con subred 10.244.0.0/24:

docker network create -d "nat" --subnet "10.244.0.0/24" my_nat

Controlador de red transparente

Los contenedores conectados a una red creada con el controlador "transparente" se conectarán directamente a la red física a través de un conmutador externo de Hyper-V. Las direcciones IP de la red física se pueden asignar de manera estática (requiere la opción --subnet especificada por el usuario) o dinámica mediante un servidor DHCP externo.

Nota:

Debido al siguiente requisito, no se admite la conexión de los hosts de contenedor a través de una red transparente en máquinas virtuales de Azure.

Requiere: cuando se usa este modo en un escenario de virtualización (el host de contenedor es una máquina virtual) se requiere la suplantación de direcciones MAC.

Creación de una red transparente

Para crear una nueva red transparente con subred 10.244.0.0/24, puerta de enlace 10.244.0.1, servidor 10.244.0.7 DNS e id. 7de VLAN:

docker network create -d "transparent" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_transparent

Superposición del controlador de red

Los orquestadores de contenedores usados popularmente, como Docker Swarm y Kubernetes, los contenedores conectados a una red superpuesta pueden comunicarse con otros contenedores conectados a la misma red en varios hosts de contenedor. Cada red de superposición se crea con su propia subred IP, definida por un prefijo ip privado. El controlador de red de superposición usa la encapsulación VXLAN para lograr el aislamiento del tráfico de red entre las redes de contenedores de inquilinos y permite volver a usar direcciones IP entre redes superpuestas.

Requiere: asegúrese de que el entorno cumple estos requisitos previos necesarios para crear redes de superposición.

Requiere: En Windows Server 2019, esto requiere KB4489899.

Requiere: En Windows Server 2016, esto requiere KB4015217.

Nota:

En Windows Server 2019 y versiones posteriores, las redes superpuestas creadas por Docker Swarm aprovechan las reglas NAT de VFP para la conectividad saliente. Esto significa que un contenedor determinado recibe 1 dirección IP. También significa que las herramientas basadas en ICMP, como ping o Test-NetConnection , deben configurarse mediante sus opciones TCP/UDP en situaciones de depuración.

Creación de una red superpuesta

Para crear una red superpuesta con subred 10.244.0.0/24, servidor 168.63.129.16DNS y VSID 4096:

docker network create -d "overlay" --attachable --subnet "10.244.0.0/24" -o com.docker.network.windowsshim.dnsservers="168.63.129.16" -o com.docker.network.driver.overlay.vxlanid_list="4096" my_overlay

Controlador de red L2bridge

Los contenedores conectados a una red creada con el controlador "l2bridge" se conectarán a la red física a través de un conmutador de Hyper-V externo . En l2bridge, el tráfico de red del contenedor tendrá la misma dirección MAC que el host debido a la operación de traducción de direcciones de capa 2 (reescritura de MAC) en la entrada y salida. En los centros de datos, esto ayuda a aliviar el estrés en los conmutadores que tienen que aprender direcciones MAC de contenedores a veces de corta duración. Las redes L2bridge se pueden configurar de dos maneras diferentes:

  1. La red L2bridge se configura con la misma subred IP que el host de contenedor.
  2. La red L2bridge está configurada con una nueva subred IP personalizada

En la configuración 2, los usuarios deberán agregar un punto de conexión en el compartimiento de red host que actúe como puerta de enlace y configurar las funcionalidades de enrutamiento para el prefijo designado.

Creación de una red l2bridge

Para crear una red l2bridge con subred 10.244.0.0/24, puerta de enlace 10.244.0.1, servidor 10.244.0.7 DNS y id. de VLAN 7:

docker network create -d "l2bridge" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_l2bridge

Sugerencia

Las redes L2bridge son altamente programables; Puede encontrar más detalles sobre cómo configurar l2bridge aquí.

Controlador de red L2tunnel

La creación es idéntica a l2bridge, pero este controlador solo debe usarse en Una instancia de Microsoft Cloud Stack (Azure). La única diferencia sobre l2bridge es que todo el tráfico de contenedor se envía al host de virtualización donde se aplica la directiva SDN, lo que permite características como grupos de seguridad de red de Azure para contenedores.

Topologías de red e IPAM

En la tabla siguiente se muestra cómo se proporciona conectividad de red para las conexiones internas (de contenedor a contenedor) y externas para cada controlador de red.

Modos de red/controladores de Docker

Controlador de red de Windows de Docker Usos típicos Contenedor a contenedor (nodo único) Contenedor a externo (nodo único + varios nodos) Contenedor a contenedor (varios nodos)
NAT (valor predeterminado) Good para desarrolladores
  • Misma subred: conexión puenteda a través del conmutador virtual de Hyper-V
  • Subred cruzada: no compatible (solo un prefijo interno NAT)
Enrutado a través de la vNIC de administración (enlazado a WinNAT) No se admite directamente: requiere exponer puertos a través del host.
Transparente Adecuado para desarrolladores o implementaciones pequeñas
  • Misma subred: conexión puenteada a través del conmutador virtual de Hyper-V
  • Subred cruzada: enrutada a través del host de contenedor
Enrutado a través del host de contenedor con acceso directo al adaptador de red (físico) Enrutado a través del host de contenedor con acceso directo al adaptador de red (físico)
Overlay Bueno para varios nodos; obligatorio para Docker Swarm, disponible en Kubernetes
  • Misma subred: conexión puenteada a través del conmutador virtual de Hyper-V
  • Subred cruzada: el tráfico de red se encapsula y enruta a través de Mgmt vNIC
No compatible directamente: requiere el segundo punto de conexión de contenedor conectado a la red NAT en Windows Server 2016 o regla NAT de VFP en Windows Server 2019. Misma subred/Subred cruzada: el tráfico de red se encapsula usando VXLAN y se enruta a través de Mgmt vNIC
L2Bridge Se usa para Kubernetes y Microsoft SDN
  • Misma subred: conexión puenteada a través del conmutador virtual de Hyper-V
  • Subred cruzada: la dirección MAC del contenedor se vuelve a escribir en la entrada y salida y enrutada
Dirección MAC del contenedor reescribirse en la entrada y salida
  • Misma subred: conexión puenteda
  • Subred cruzada: enrutada a través de Mgmt vNIC en WSv1809 y versiones posteriores
L2Tunnel Solo Azure Misma subred/entre subredes: anclado al conmutador virtual de Hyper-V del host físico en el que se aplica la directiva El tráfico debe pasar por la puerta de enlace de red virtual de Azure Misma subred/entre subredes: anclado al conmutador virtual de Hyper-V del host físico en el que se aplica la directiva

IPAM

Las direcciones IP se asignan de forma diferente para cada controlador de red. Windows usa el servicio de red de host (HNS) para proporcionar IPAM para el controlador nat y funciona con el modo enjambre de Docker (KVS interno) para proporcionar IPAM para la superposición. Todos los demás controladores de red usan IPAM externo.

Modo de red/controlador IPAM
NAT Asignación y asignación dinámica de IP por servicio de redes de host (HNS) desde el prefijo de subred NAT interno
Transparente Asignación y asignación de direcciones IP estáticas o dinámicas (mediante el servidor DHCP externo) desde direcciones IP dentro del prefijo de red del host de contenedor
Overlay Asignación de IP dinámica desde prefijos administrados y asignación del modo Swarm del motor de Docker mediante HNS
L2Bridge Asignación y asignación dinámica de IP por servicio de redes de host (HNS) desde el prefijo de subred proporcionado
L2Tunnel Solo Azure: asignación y asignación dinámica de IP desde el complemento

Detección de servicios

La detección de servicios solo se admite para determinados controladores de red de Windows.

Nombre del controlador Detección de servicios locales Detección de servicios globales
NAT SÍ con Docker EE
overlay SÍ con Docker EE o kube-dns
transparent No No
l2bridge SÍ con kube-dns SÍ con kube-dns