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 principais componentes do sistema operacional e a maioria dos drivers de dispositivos são executados no modo kernel, e os aplicativos são executados no modo de usuário. Quando você implementa contêineres no seu computador, cada contêiner cria um ambiente isolado e leve para executar aplicativos no sistema operacional host. O contêiner compartilha a maior parte do kernel do sistema operacional do host para acessar o sistema de arquivos e o 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 o sistema de arquivos, a rede, o agendamento de processos e o gerenciamento de memória. O sistema operacional de contêiner é o sistema operacional que faz parte do runtime empacotado. Você pode usar diferentes versões do Windows com seus contêineres para permitir o acesso a recursos específicos do sistema operacional ou a outros softwares necessários.
Isolamento e segurança de rede
Os contêineres do Windows dão suporte a dois tipos de isolamento de runtime: 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êineres em execução no mesmo host obtêm isolamento por meio do namespace e das configurações de controle de recursos, juntamente com outras funções de isolamento de processos.
- Cada contêiner compartilha o mesmo kernel com o sistema operacional do 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 em 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 o isolamento do Hyper-V no qual o adaptador de rede virtual do contêiner está instalado. Os contêineres do Windows Server usam um adaptador de rede virtual do host para se conectar ao comutador virtual. O isolamento do Hyper-V usa um adaptador de rede de máquina virtual sintética (não exposto à máquina virtual utilitária) para anexar-se ao comutador virtual.
Gerenciamento de rede com o Serviço de Rede de Host (HNS)
O Windows usa o Serviço de Rede de Host (HNS) e o Serviço de Computação de Host (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 de 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 comutadores virtuais. 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 regras de encaminhamento de porta WinNAT e mapeamentos com as regras de PERMISSÂO do Firewall do Windows correspondentes. Para todas as outras redes, o HNS usa a Plataforma de Filtragem Virtual (VFP) para criar políticas de balanceamento de carga, ACLs e encapsulamento.
Interação com o firewall
Dependendo da configuração do seu contêiner e do tipo de driver de rede, as ACLs de porta serão impostas por uma combinação do Firewall do Windows e da Plataforma de Filtragem Virtual (VFP) do Azure. Os seguintes valores usam o firewall dos hosts do Windows (aperfeiçoados com namespaces de rede) e VFP:
- Saída Padrão: PERMITIR TUDO.
- Entrada Padrão: PERMITIR TODO o tráfego de rede não solicitado (TCP, UDP, ICMP, IGMP). NEGAR TODOS os outros tráfegos de rede que não sejam provenientes desses protocolos.
Drivers de rede
O Windows dá suporte a cinco drivers ou modos de rede diferentes para contêineres do Docker: NAT, Transparente, Sobreposição, L2Bridge e L2Tunnel. Além da rede NAT padrão criada pelo Docker no Windows, você também pode definir redes de contêineres personalizadas usando o comando docker network create
na CLI 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 atenda aos requisitos da sua infraestrutura de rede física e à configuração do host (um ou vários nós).
Driver de rede | 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) |
Roteado por meio do adaptador de rede virtual de gerenciamento (vinculado ao 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: Roteado pelo 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 do adaptador de rede virtual 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 do adaptador de rede virtual de gerenciamento |
L2Bridge | Usado para o Kubernetes e a Microsoft Software Designed Network (SDN) | Mesma Sub-rede: conexão de ponte por meio do comutador virtual do 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 por meio do adaptador de rede virtual de gerenciamento no WSv1809 e superior |
|||
L2Tunnel | Somente no Azure | Mesma Sub-rede/Cruzada: Fixado no comutador virtual Hyper-V do host físico, ao qual 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 |
Opções avançadas de rede
Você pode aproveitar várias opções de driver de rede para recursos e funcionalidades específicos do Windows. Estes são alguns exemplos:
- Acesse o Agrupamento Incorporado de Comutador para redes de host de contêineres especificando vários adaptadores de rede para seu contêiner do Windows.
- Defina a ID da VLAN para uma rede para configurar o isolamento da VLAN para quaisquer pontos de extremidade de contêiner que se conectem à rede.
- Especifique a política OutboundNAT de uma rede para permitir que o seu contêiner tenha acesso ao mundo externo.
Para obter mais informações, confira Opções avançadas de rede no Windows.