Conceitos de rede para contêineres do Windows
O processador em um computador Windows padrão tem um modo kernel e um modo de usuário. Os componentes principais do sistema operacional e a maioria dos drivers de dispositivo são executados no modo kernel e os aplicativos são executados no modo de usuário. Quando você implementa contêineres em seu computador, cada contêiner cria um ambiente leve e isolado para executar aplicativos no sistema operacional host. O contêiner compartilha a maior parte do kernel do sistema operacional host para acesso ao sistema de arquivos e ao registro.
Os contêineres do Windows precisam de um sistema operacional de contêiner. O contêiner depende do kernel do sistema operacional para gerenciar serviços como sistema de arquivos, rede, agendamento de processos e gerenciamento de memória. O sistema operacional contêiner é o sistema operacional que faz parte do tempo de execução empacotado. Você pode usar diferentes versões do Windows com seus contêineres para habilitar o acesso a recursos específicos do sistema operacional ou outro software necessário.
Isolamento e segurança da rede
Os contêineres do Windows oferecem suporte a dois tipos de isolamento de tempo de execução: Process e Hyper-V. A principal diferença é a extensão do isolamento criado entre o contêiner, o sistema operacional do host e os outros contêineres no host.
O isolamento do processo é a abordagem mais comum. Várias instâncias de contêiner em execução no mesmo host obtêm isolamento por meio das configurações de namespace e controle de recursos, juntamente com outras funções de isolamento de processo.
- Cada contêiner compartilha o mesmo kernel com o sistema operacional host e outros contêineres no host.
- Cada contêiner tem um adaptador de rede virtual que se conecta a um comutador virtual.
- Cada ponto de extremidade de contêiner é colocado em seu próprio namespace de rede. O namespace de rede padrão é o local do adaptador de rede virtual do host e da pilha de rede do host.
O isolamento do Hyper-V oferece segurança aprimorada e compatibilidade mais ampla entre o host e os contêineres. Várias instâncias de contêiner são executadas no mesmo host, mas cada contêiner é executado em uma máquina virtual otimizada. A máquina virtual fornece isolamento no nível de hardware entre cada contêiner e o host do contêiner.
- Cada contêiner tem essencialmente seu próprio kernel.
- Para impor o isolamento de rede entre os contêineres no host, um namespace de rede é criado para cada contêiner.
- Os contêineres são executados sob isolamento Hyper-V no qual o adaptador de rede virtual para o contêiner está instalado. Os contêineres do Windows Server usam um adaptador de rede virtual de host para se conectar ao comutador virtual. O isolamento do Hyper-V usa um adaptador de rede de máquina virtual sintético (não exposto à máquina virtual do utilitário) para se conectar ao comutador virtual.
Gerenciamento de rede com o Serviço de Rede Host (HNS)
O Windows usa o Host Networking Service (HNS) e o Host Compute Service (HCS) para criar contêineres e anexar pontos de extremidade à rede.
- Rede: o HNS cria um comutador virtual Hyper-V para cada rede e o HNS cria os pools NAT e IP necessários.
- Pontos de extremidade: o HNS cria o namespace de rede para cada ponto de extremidade de contêiner e o HNS/HCS adiciona o adaptador de rede virtual ao namespace. O HNS cria portas de comutador virtual. O HNS atribui o endereço IP, as informações do Sistema de Nomes de Domínio (DNS), as rotas, etc., ao ponto de extremidade de acordo com o modo de driver de rede configurado.
- Políticas: Para a rede NAT padrão, o HNS cria as regras e mapeamentos de encaminhamento de porta WinNAT com as regras ALLOW do Firewall do Windows correspondentes. Para todas as outras redes, o HNS usa a Plataforma de Filtragem Virtual (VFP) para criar políticas para balanceamento de carga, ACLs e encapsulamento.
Interação com o firewall
Dependendo da configuração do contêiner e do tipo de driver de rede, as ACLs de porta são impostas por uma combinação do Firewall do Windows e da Plataforma de Filtragem Virtual (VFP) do Azure. Os valores a seguir usam o firewall dos hosts Windows (habilitado com namespaces de rede) e o VFP:
- Saída padrão: PERMITIR TUDO.
- Default Inbound: ALLOW ALL (TCP, UDP, ICMP, IGMP) tráfego de rede não solicitado. NEGAR TODO o outro tráfego de rede que não seja desses protocolos.
Drivers de rede
O Windows suporta cinco drivers ou modos de rede diferentes para contêineres do Docker: NAT, Transparent, Overlay, L2Bridge e L2Tunnel. Além da rede NAT padrão criada pelo Docker no Windows, você também pode definir redes de contêiner personalizadas usando o comando da CLI docker network create
do Docker.
A tabela a seguir resume os tipos de driver de rede disponíveis para contêineres do Docker no Windows. Escolha o driver de rede que satisfaça os requisitos de sua infraestrutura de rede física e configuração de host (nó único ou múltiplo).
Controlador de rede | 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: conexã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 adaptador de rede virtual de gerenciamento (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: conexã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 | Bom para multi-nós; necessário para o Docker Swarm, disponível no Kubernetes | Mesma sub-rede: conexão em ponte através do comutador virtual Hyper-V Sub-rede cruzada: O tráfego de rede é encapsulado e roteado através do adaptador de rede virtual de gerenciamento. |
Sem suporte direto - requer o segundo ponto de extremidade de contêiner conectado à rede NAT no Windows Server 2016 ou a regra NAT VFP no Windows Server 2019. | Sub-rede Same/Cross: O tráfego de rede é encapsulado usando VXLAN e roteado através do adaptador de rede virtual de gerenciamento |
L2Bridge [en] | Usado para Kubernetes e Microsoft Software Designed Network (SDN) | Mesma sub-rede: conexã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 recipiente | |
reescrito em ingresso e saída | Mesma sub-rede: conexão em ponte Cross Subnet: roteado através do adaptador de rede virtual de gerenciamento no WSv1809 e superior |
|||
Túnel L2 | Apenas Azure | Sub-rede Same/Cross: Hair-fixned ao comutador 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 | Sub-rede Same/Cross: Hair-fixned ao comutador virtual Hyper-V do host físico para onde a política é aplicada |
Opções avançadas de rede
Pode tirar partido de várias opções de controladores de rede para capacidades e funcionalidades específicas do Windows. Seguem-se alguns exemplos:
- Acesse o Switch Embedded Teaming para redes de host de contêiner especificando vários adaptadores de rede para seu contêiner do Windows.
- Defina o ID de VLAN de uma rede para configurar o isolamento de VLAN para quaisquer pontos de extremidade de contêiner que se conectem à rede.
- Especifique a política OutboundNAT para uma rede para permitir o acesso do contêiner ao mundo exterior.
Para obter mais informações, consulte Opções avançadas de rede no Windows.