Compartilhar via


Drivers de rede de contêiner do Windows

Aplica-se a: Windows Server 2022, Windows Server 2019 e 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êineres personalizados. As redes definidas pelo usuário podem ser criadas usando o comando da CLI docker network create -d <NETWORK DRIVER TYPE> <NAME> 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 interno do Hyper-V e receberão um endereço IP do prefixo IP especificado pelo usuário (--subnet). Há suporte para o mapeamento/encaminhamento de porta do host de 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 fixed-cidr configuração no arquivo de configuração do daemon do 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 a 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 externo do Hyper-V. Os IPs da rede física podem ser atribuídos de forma estática (requer a opção --subnet especificada pelo usuário) ou dinâmica usando um servidor DHCP.

Observação

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

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

Criando uma rede transparente

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

Sobrepor driver de rede

Popularmente usados por orquestradores de contêineres, como Docker Swarm e Kubernetes, os 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 de IP privado. O driver de rede de sobreposição usa o encapsulamento VXLAN para obter isolamento de tráfego de rede entre redes de contêiner de locatário e permite o reutilização de endereços IP em redes de sobreposição.

Requer: verifique se o ambiente atende a esses pré-requisitos necessários para criar redes de sobreposição.

Requer: no Windows Server 2019, isso requer KB4489899.

Requer: em 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 um 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 sub-rede 10.244.0.0/24, servidor 168.63.129.16DNS 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 contêineres anexados a uma rede criada com o driver 'l2bridge' serão conectados à rede física por meio de um comutador externo do 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 (reespejagem mac) na entrada e saída. Em datacenters, isso ajuda a aliviar o estresse em comutadores que precisam aprender endereços MAC de contêineres 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 que o host do 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 ponto de extremidade no compartimento de rede do host que atua como um gateway e configurar recursos 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 10.244.0.7 DNS 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

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 em que a política de SDN é aplicada, permitindo assim 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 para 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 para contêiner (Nó único) Contêiner para externo (nó único + diversos nós) Contêiner para contêiner (diversos nós)
NAT (Padrão) Bom para Desenvolvedores
  • Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V
  • Sub-rede cruzada: não compatível (somente um prefixo interno de NAT)
Roteada por meio de vNIC de Gerenciamento (associado a WinNAT) Não tem suporte direto: requer a exposição de portas por meio do host
Transparente Bom para Desenvolvedores ou implantações pequenas
  • Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V
  • Sub-rede cruzada: roteada por meio do host do contêiner
Roteada por meio do host de contêiner com acesso direto ao adaptador de rede (físico) Roteada por meio do host de contêiner com acesso direto ao adaptador de rede (físico)
Sobreposição Adequado para diversos nós, necessário para o Docker Swarm e disponível no Kubernetes
  • Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V
  • Sub-rede cruzada: o tráfego de rede é encapsulado e roteado por meio da vNIC de Gerenciamento
Sem suporte direto: requer um segundo ponto de extremidade de contêiner anexado à rede NAT no Windows Server 2016 ou a regra de NAT VFP no Windows Server 2019. Mesma/Sub-rede cruzada: o tráfego de rede é encapsulado usando VXLAN e roteado por meio da vNIC de Gerenciamento
L2Bridge Usado para Kubernetes e SDN Microsoft
  • Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V
  • Sub-rede cruzada: contêiner do endereço MAC reescrito na entrada e na saída e roteado
Contêiner do endereço MAC reescrito na entrada e na saída
  • Mesma sub-rede: conexão com ponte
  • Sub-rede cruzada: roteamento por meio do Mgmt vNIC em WSv1809 e posterior
L2Tunnel Somente no Azure Mesma/Sub-rede cruzada: fixada a comutador virtual do Hyper-V do host físico a onde a política é aplicada O tráfego deve passar pelo gateway de rede virtual do Azure Mesma/Sub-rede cruzada: fixada a comutador virtual do Hyper-V do host físico a onde a política é aplicada

IPAM

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

Modo de rede/Driver IPAM
NAT Alocação e atribuição de IP dinâmico pelo HNS (Serviço de Rede de Host) do prefixo de sub-rede NAT interno
Transparente Alocação de IP estático ou dinâmico (usando o servidor DHCP externo) e atribuição de endereços IP no prefixo de rede do host do contêiner
Sobreposição Alocação dinâmica de IP do prefixos gerenciados do Docker Engine Swarm e atribuição por meio do HNS
L2Bridge Alocação e atribuição de IP dinâmico pelo HNS (Serviço de Rede de Host) do prefixo de sub-rede fornecido
L2Tunnel Somente o Azure - alocação de IP dinâmico e a atribuição de plug-in

Descoberta de Serviços

A Descoberta de Serviços é compatível somente com determinados drivers de rede do Windows.

Nome do driver Descoberta de Serviços local Descoberta de Serviços global
nat YES SIM com Docker EE
overlay YES SIM com Docker EE ou kube-dns
transparent Não Não
l2bridge SIM com kube-dns SIM com kube-dns