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. 7
de 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.16
DNS 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:
- La red L2bridge se configura 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ú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 |
|
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 |
|
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 |
|
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 |
|
Dirección MAC del contenedor reescribirse en la entrada y salida |
|
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Í | SÍ con Docker EE |
overlay | SÍ | SÍ con Docker EE o kube-dns |
transparent | No | No |
l2bridge | SÍ con kube-dns | SÍ con kube-dns |