Compartir a través de


Controladores de red de contenedores de Windows

Se aplica a: Windows Server 2025, 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 contenedor personalizadas. Las redes definidas por el usuario se pueden crear mediante el comando docker network create -d <NETWORK DRIVER TYPE> <NAME> de la CLI 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 de Hyper-V interno de y recibirán una dirección IP del prefijo IP especificado por el usuario (--subnet). Se admite el reenvío o asignación de puertos desde el host del contenedor a los puntos finales del contenedor.

Sugerencia

Es posible personalizar la subred utilizada por la red "nat" predeterminada mediante el valor fixed-cidr 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 nueva 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 de Hyper-V externo. Las direcciones IP de la red física se pueden asignar estáticamente (requiere la opción --subnet especificada por el usuario) o dinámicamente 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.

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

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 DNS 10.244.0.7 e id. de VLAN 7:

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

Superponer controlador de red

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

Requiere: Asegúrese de que su entorno cumpla estos requisitos previos 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 de superposición 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 nueva red de superposición con subred 10.244.0.0/24, servidor DNS 168.63.129.16y 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 MAC) de 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 está configurada 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úa como puerta de enlace y configurar las funcionalidades de enrutamiento para el prefijo designado.

Creación de una red l2bridge

Para crear una nueva red l2bridge con subred 10.244.0.0/24, puerta de enlace 10.244.0.1, servidor DNS 10.244.0.7 e 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 se debe usar en una pila de Microsoft Cloud (Azure). La única diferencia con respecto a l2bridge es que todo el tráfico de contenedor se envía al host de virtualización donde se aplica la directiva de SDN, lo que permite características como las de grupos de seguridad de red de Azure para los contenedores.

Topologías de red e IPAM

En la tabla siguiente se muestra cómo se proporciona conectividad de red para conexiones internas (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 (predeterminado) Bueno para desarrolladores
  • Misma subred: conexión con puente desde el conmutador virtual de Hyper-V
  • Entre subredes: no compatible (solo un prefijo interno NAT)
Enrutado mediante la vNIC de administración (enlazada a WinNAT) No se admite directamente: es necesario exponer puertos mediante el host
Transparente Bueno para desarrolladores o implementaciones pequeñas
  • Misma subred: conexión con puente desde el conmutador virtual de Hyper-V
  • Entre subredes: se enruta mediante el 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)
Superposición Bueno para varios nodos; obligatorio para Docker Swarm, disponible en Kubernetes
  • Misma subred: conexión con puente desde el conmutador virtual de Hyper-V
  • Subred cruzada: el tráfico de red se encapsula y se enruta a través de mgmt vNIC
No se admite directamente: se necesita un segundo punto de conexión de contenedor conectado a la red NAT en Windows Server 2016, o bien una regla NAT de VFP en Windows Server 2019. Misma subred o entre subredes: el tráfico de red se encapsula mediante VXLAN y se enruta a través de mgmt vNIC
L2Bridge Se usa para Kubernetes y Microsoft SDN
  • Misma subred: conexión con puente desde el conmutador virtual de Hyper-V
  • Entre subredes: la dirección MAC del contenedor se reescribe durante la entrada y la salida, y se enruta
Dirección MAC del contenedor reescrita en la entrada y a la salida
  • Misma subred: conexión puenteda
  • Entre subredes: se enruta mediante la vNIC Mgmt en WSv1809 y versiones posteriores
L2Tunnel Solo Azure Misma subred o entre subredes: anclada al conmutador virtual de Hyper-V del host físico a donde se aplica la directiva El tráfico debe pasar por la puerta de enlace de red virtual de Azure Misma subred o entre subredes: anclada al conmutador virtual de Hyper-V del host físico a donde se aplica la directiva

IPAM

Las direcciones IP se reparten y asignan de manera diferente para cada controlador de red. Windows usa el Servicio de redes de host (HNS) para proporcionar IPAM para el controlador NAT y funciona con el modo Docker Swarm (KVS interno) a fin de proporcionar IPAM para la superposición. Todos los demás controladores de red usan un IPAM externo.

Modo de red/Controlador IPAM
NAT Asignación y asignación dinámica de IP por el Servicio de redes de host (HNS) desde el prefijo de subred NAT interno
Transparente Asignación y distribución de direcciones IP estáticas o dinámicas (mediante un servidor DHCP externo) a partir de direcciones IP dentro del prefijo de red del host del contenedor
Superposición Asignación dinámica de IP desde prefijos gestionados por el modo Swarm del motor Docker y asignación mediante HNS
L2Bridge Asignación dinámica de IP por el Servicio de Red de Host (HNS) a partir del prefijo de subred proporcionado
L2Tunnel Solo para Azure: asignación y atribució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
superposición SÍ con Docker EE o kube-dns
transparente NO NO
l2bridge SÍ con kube-dns SÍ con kube-dns