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/24
de sub-rede, 10.244.0.1
de 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/24
de sub-rede, 168.63.129.16
de 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:
- A rede L2bridge é configurada com a mesma sub-rede IP que o host do contêiner
- 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 |
|
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 |
|
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 |
|
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 |
|
Endereço MAC do contêiner reescrito na entrada e saída |
|
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" |