Compartilhar via


Drivers de rede de contêiner do Windows

Aplica-se a: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016

Além de aproveitar a rede 'nat' padrão criada pelo Docker no Windows, os usuários podem definir redes de contêiner personalizadas. Redes definidas pelo usuário podem ser criadas usando o comando docker network create -d <NETWORK DRIVER TYPE> <NAME> da CLI do Docker. No Windows, os seguintes tipos de driver de rede estão disponíveis:

Driver de rede NAT

Os contêineres anexados a uma rede criada com o driver 'nat' serão conectados a um comutador Hyper-V interno e receberão um endereço IP do prefixo IP especificado pelo usuário (--subnet). Há suporte para o encaminhamento/mapeamento de porta do host do contêiner para os pontos de extremidade do contêiner.

Dica

É possível personalizar a sub-rede usada pela rede 'nat' padrão por meio da configuração fixed-cidr no arquivo de configuração do daemon do Docker .

Nota

As redes NAT criadas no Windows Server 2019 (ou acima) não são mais mantidas após a reinicialização.

Criando uma rede NAT

Para criar uma nova rede NAT com sub-rede 10.244.0.0/24:

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

Driver de rede transparente

Os contêineres anexados a uma rede criada com o driver "transparente" serão conectados diretamente à rede física por meio de um comutador Hyper-V externo. Os IPs da rede física podem ser atribuídos estaticamente (requer --subnet opção especificada pelo usuário) ou dinamicamente usando um servidor DHCP externo.

Nota

Devido ao requisito a seguir, não há suporte para conectar seus hosts de contêiner em uma rede transparente em VMs do Azure.

Requer: quando este modo é utilizado em um cenário de virtualização (o host do contêiner é uma VM), é necessária a falsificação do endereço MAC.

Criando uma rede transparente

Para criar uma nova rede transparente com 10.244.0.0/24de sub-rede, 10.244.0.1de gateway, 10.244.0.7 de servidor DNS 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

Driver de rede de sobreposição

Popularmente usados por orquestradores de contêineres, como Docker Swarm e Kubernetes, contêineres anexados a uma rede de sobreposição podem se comunicar com outros contêineres anexados à mesma rede em vários hosts de contêiner. Cada rede de sobreposição é criada com sua própria sub-rede IP, definida por um prefixo IP privado. O driver de rede de sobreposição usa o encapsulamento VXLAN para alcançar o isolamento de tráfego de rede entre redes de contêiner de locatário e permite a reutilização de endereços IP em redes de sobreposição.

Requisitos: Certifique-se de que seu ambiente atende a esses pré-requisitos necessários para criar redes de sobreposição.

Requer o seguinte: no Windows Server 2019, isso requer KB4489899.

É necessário: no Windows Server 2016, isso requer KB4015217.

Nota

No Windows Server 2019 e acima, as redes de sobreposição criadas pelo Docker Swarm aproveitam as regras de NAT VFP para conectividade de saída. Isso significa que um determinado contêiner recebe um endereço IP. Isso também significa que ferramentas baseadas em ICMP, como ping ou Test-NetConnection, devem ser configuradas usando suas opções TCP/UDP em situações de depuração.

Como criar uma rede de sobreposição

Para criar uma nova rede overlay com a sub-rede 10.244.0.0/24, servidor DNS 168.63.129.16e 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

Driver de rede L2bridge

Os contêineres anexados a uma rede criada com o driver 'l2bridge' serão conectados à rede física por meio de um comutador externo de Hyper-V. No l2bridge, o tráfego de rede de contêiner terá o mesmo endereço MAC que o host devido à operação de conversão de endereços de Camada 2 (re-escrita de MAC) na entrada e saída. Em datacenters, isso ajuda a aliviar o estresse nos switches, que precisam aprender os endereços MAC de contêineres que, às vezes, são de curta duração. As redes L2bridge podem ser configuradas de duas maneiras diferentes:

  1. A rede L2bridge é configurada com a mesma sub-rede IP do host de contêiner
  2. A rede L2bridge está configurada com uma nova sub-rede IP personalizada

Na configuração 2, os usuários precisarão adicionar um endpoint no compartimento da rede do host que atua como um gateway e configurar capacidades de roteamento para o prefixo designado.

Criando uma rede l2bridge

Para criar uma nova rede l2bridge com a sub-rede 10.244.0.0/24, o gateway 10.244.0.1, o servidor DNS 10.244.0.7 e o identificador 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

Dica

As redes L2bridge são altamente programáveis; Mais detalhes sobre como configurar o l2bridge podem ser encontrados aqui.

Driver de rede L2tunnel

A criação é idêntica ao l2bridge, porém, esse driver só deve ser usado em uma Pilha do Microsoft Cloud Stack (Azure). A única diferença em relação à l2bridge é que todo o tráfego de contêiner é enviado para o host de virtualização em que a política de SDN é aplicada, habilitando recursos como Grupos de segurança de rede do Azure para contêineres.

Topologias de rede e IPAM

A tabela a seguir mostra como a conectividade de rede é fornecida para conexões internas (contêiner a contêiner) e externas para cada driver de rede.

Modos de rede/drivers do Docker

Driver de Rede do Docker para Windows Usos típicos Contêiner a contêiner (nó único) Contêiner a externo (nó único + vários nós) Contêiner a contêiner (vários nós)
NAT (padrão) Bom para desenvolvedores
  • Mesma sub-rede: conexão em ponte por meio do comutador virtual Hyper-V
  • Sub-rede cruzada: sem suporte (apenas um prefixo interno NAT)
Roteamento pelo gerenciamento vNIC (associado ao WinNAT) Sem suporte direto: requer que portas sejam expostas através do host
Transparente Bom para desenvolvedores ou implantações pequenas
  • Mesma sub-rede: conexão em ponte por meio do comutador virtual Hyper-V
  • Entre sub-redes: roteamento pelo host de contêiner
Roteamento pelo host de contêiner com acesso direto ao adaptador de rede (físico) Roteamento pelo host de contêiner com acesso direto ao adaptador de rede (físico)
Sobreposição Ideal para vários nós; necessário para o Docker Swarm, disponível no Kubernetes
  • Mesma sub-rede: conexão em ponte por meio do comutador virtual Hyper-V
  • Sub-rede cruzada: o tráfego de rede é encapsulado e roteado por meio do Mgmt vNIC
Sem suporte direto – requer um segundo ponto de extremidade de contêiner anexado à rede NAT no Windows Server 2016 ou uma regra NAT VFP no Windows Server 2019. Mesma sub-rede/entre sub-redes: o tráfego de rede é encapsulado usando VXLAN e roteado por meio da vNIC de gerenciamento
L2Bridge Usado para Kubernetes e Microsoft SDN
  • Mesma sub-rede: conexão em ponte por meio do comutador virtual Hyper-V
  • Sub-rede cruzada: endereço MAC do contêiner reescrito na entrada e saída e roteado
Endereço MAC do contêiner reescrito na entrada e saída
  • Mesma sub-rede: conexão com ponte
  • Sub-rede cruzada: roteada pela vNIC de gerenciamento no WSv1809 e acima
L2Tunnel Somente no Azure Mesma sub-rede/Entre sub-redes: anexada ao comutador virtual do Hyper-V do host físico em que a política é aplicada O tráfego deve passar pelo gateway de rede virtual do Azure Mesma sub-rede/Entre sub-redes: anexada ao comutador virtual do Hyper-V do host físico em que a política é aplicada

IPAM

Os endereços IP são alocados e atribuídos de forma diferente para cada driver de rede. O Windows usa o HNS (Serviço de Rede de Host) para fornecer IPAM para o driver nat e trabalha com o Modo Docker Swarm (KVS interno) para fornecer IPAM para sobreposição. Todos os outros drivers de rede usam um IPAM externo.

Modo de Rede/Controlador IPAM
NAT Alocação e atribuição de IPs dinâmicos pelo HNS (Serviço de Rede do Host) do prefixo interno da sub-rede NAT
Transparente Alocação e atribuição de IP, que pode ser estática ou dinâmica (usando um servidor DHCP externo), a partir de endereços IP dentro do prefixo de rede do host do contêiner.
Sobreposição Alocação dinâmica de IPs a partir dos prefixos gerenciados pelo Modo Swarm do Docker Engine e atribuição por meio do HNS
L2Bridge Alocação e atribuição dinâmica de IP pelo HNS (Serviço de Rede de Host) do prefixo de sub-rede fornecido
L2Tunnel Apenas Azure – Alocação e atribuição dinâmica de IP pelo plug-in

Descoberta de Serviço

A Descoberta de Serviços só tem suporte para determinados drivers de rede do Windows.

Nome do driver Descoberta de Serviço Local Descoberta de Serviço Global
Nat SIM SIM com o Docker EE
sobreposição SIM SIM, com Docker EE ou kube-dns
transparente NÃO NÃO
l2bridge SIM com kube-dns SIM com kube-dns