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.16
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 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:
- La red L2bridge está configurada con la misma subred IP que el host de contenedor.
- 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 |
|
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 |
|
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 |
|
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 |
|
Dirección MAC del contenedor reescrita en la entrada y a la salida |
|
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Í | SÍ con Docker EE |
superposición | SÍ | SÍ con Docker EE o kube-dns |
transparente | NO | NO |
l2bridge | SÍ con kube-dns | SÍ con kube-dns |