Partilhar 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. As 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 contentores ligados a uma rede criada com o controlador «nat» serão ligados a um comutador Hyper-V interno e receberão um endereço IP do prefixo IP especificado pelo utilizador (--subnet). Há suporte para encaminhamento/mapeamento de portas 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 através da configuração fixed-cidr no arquivo de configuração do daemon Docker.

Observação

As redes NAT criadas no Windows Server 2019 (ou superior) não são mais persistidas 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 contentores ligados a uma rede criada com o controlador «transparente» serão diretamente ligados à rede física através de um comutador Hyper-V externo. IPs da rede física podem ser atribuídos estaticamente (requer opção de --subnet especificada pelo usuário) ou dinamicamente usando um servidor DHCP externo.

Observação

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

Requer: A utilização deste modo num cenário de virtualização (quando o host do contêiner é uma VM) requer a falsificação de endereço MAC.

Criação de 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, os contêineres conectados a uma rede de sobreposição podem se comunicar com outros contêineres conectados à 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 utiliza encapsulamento VXLAN para garantir o isolamento do tráfego de rede entre redes de contentores de inquilinos e permite a reutilização de endereços IP em redes de sobreposição.

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

Requer: No Windows Server 2019, isso requer KB4489899.

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

Observação

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

Criando uma rede de sobreposição

Para criar uma nova rede de sobreposição com 10.244.0.0/24de sub-rede, 168.63.129.16de servidor DNS e 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 contentores ligados a uma rede criada com o controlador 'l2bridge' serão ligados à rede física através de um comutador Hyper-V externo. No l2bridge, o tráfego de rede dos contentores terá o mesmo endereço MAC que o do host devido à operação de tradução de endereço de camada 2 (reescrita de MAC) na entrada e saída. Em datacenters, isso ajuda a aliviar a pressão sobre os switches que precisam aprender endereços MAC de contêineres que às vezes são de curta duração. As redes L2bridge podem ser configuradas de 2 maneiras diferentes:

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

Na configuração 2, os utilizadores precisarão adicionar um endpoint no compartimento de rede do anfitrião, que atua como um gateway, e configurar as capacidades de roteamento para o prefixo designado.

Criando uma rede l2bridge

Para criar uma nova rede l2bridge com sub-rede 10.244.0.0/24, gateway 10.244.0.1, servidor DNS 10.244.0.7 e ID de VLAN de 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 à l2bridge, no entanto, esse driver só deve ser usado em um Microsoft Cloud Stack (Azure). A única diferença em relação ao l2bridge é que todo o tráfego de contêiner é enviado para o host de virtualização onde a política SDN é aplicada, habilitando recursos como Grupos de Segurança de Rede do Azure para contêineres.

Topologias de rede e IPAM

A tabela abaixo 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 Docker

Driver de rede do Docker para Windows Utilizações típicas Contêiner a contêiner (nó único) Contêiner para 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: ligação em ponte através do comutador virtual Hyper-V
  • Sub-rede cruzada: Não suportado (apenas um prefixo interno NAT)
Roteado através do Management vNIC (vinculado ao WinNAT) Não suportado diretamente: requer a exposição de portas através do host
transparente Bom para desenvolvedores ou pequenas implantações
  • Mesma sub-rede: ligação em ponte através do comutador virtual Hyper-V
  • Sub-rede cruzada: Roteada através do host de contêiner
Roteado através do host de contêiner com acesso direto ao adaptador de rede (físico) Roteado através do host de contêiner com acesso direto ao adaptador de rede (físico)
Sobreposição Adequado para multi-nó; necessário para o Docker Swarm, disponível em Kubernetes
  • Mesma sub-rede: conexão em ponte através do switch virtual Hyper-V
  • Cross Subnet: O tráfego de rede é encapsulado e roteado através do Mgmt vNIC
Sem suporte direto - requer um segundo ponto final de contentor conectado à rede NAT no Windows Server 2016 ou uma regra NAT VFP no Windows Server 2019. Same/Cross Subnet: O tráfego de rede é encapsulado usando VXLAN e roteado através do Mgmt vNIC
L2Bridge Usado para Kubernetes e Microsoft SDN
  • Mesma sub-rede: ligação em ponte através do comutador virtual Hyper-V
  • Cross Subnet: 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: ligação em ponte
  • Cross Subnet: roteado através do Mgmt vNIC no WSv1809 e superior
L2Tunnel Apenas Azure Sub-rede Mesma/Cruzada: Encaixado ao switch virtual Hyper-V do host físico para onde a política é aplicada O tráfego deve passar pelo gateway de rede virtual do Azure Same/Cross na Sub-rede: Redirecionado ao switch virtual Hyper-V do host físico onde 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 Serviço de Rede de Host (HNS) para fornecer IPAM para o driver nat e funciona com o Modo de Enxame do Docker (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 IP dinâmico pelo Serviço de Rede de Host (HNS) a partir do prefixo de sub-rede NAT interna
Transparente Alocação de IP estático ou dinâmico (usando servidor DHCP externo) e atribuição de endereços IP dentro do prefixo de rede do host de contêiner
Sobreposição Alocação dinâmica de IP a partir de prefixos geridos pelo Docker Engine Swarm Mode e atribuição através do HNS
L2Bridge [en] Alocação e atribuição dinâmica de IP pelo Serviço de Rede de Host (HNS) com base no prefixo de sub-rede fornecido
Túnel L2 Apenas Azure - Alocação e atribuição de IP dinâmico a partir do plug-in

Descoberta de serviços

A Deteção de Serviços só é suportada para determinados controladores de rede do Windows.

Nome do controlador Descoberta de serviço local Descoberta de serviço global
Nat SIM SIM com Docker EE
sobreposição SIM SIM com o Docker EE ou o kube-dns
transparente NÃO NÃO
l2bridge SIM com kube-dns SIM com "kube-dns"