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 é onde se encontram o adaptador de rede virtual do host e a pilha de rede do host.
Hyper-V isolamento fornece 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 contentores são executados com o isolamento Hyper-V, onde o adaptador de rede virtual para o contentor está instalado. Os contêineres do Windows Server usam um adaptador de rede virtual de host para se conectar ao comutador virtual. Hyper-V isolamento usa um adaptador de rede de máquina virtual sintética (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: HNS cria um comutador virtual Hyper-V para cada rede, e HNS cria os pools de NAT e IP necessários.
- Pontos de extremidade: HNS cria o namespace de rede para cada ponto de extremidade de contêiner e HNS/HCS adiciona o adaptador de rede virtual ao namespace. HNS cria portas de comutação virtuais. O HNS atribui ao endpoint o endereço IP, as informações do Sistema de Nomes de Domínio (DNS), as rotas, etc., de acordo com o modo de driver de rede configurado.
- Políticas: Para a rede NAT padrão, o HNS cria as regras de encaminhamento de porta WinNAT e mapeamentos 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 seguintes valores usam o firewall dos hosts Windows (aperfeiçoado com namespaces de rede) e o VFP.
- Saída padrão: PERMITIR TUDO.
- Default Inbound: PERMITIR TODO o tráfego de rede não solicitado (TCP, UDP, ICMP, IGMP). 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 docker network create
da 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 satisfaça os requisitos de sua infraestrutura de rede física e configuração de host (nó único ou múltiplo).
Driver de rede | Utilizações típicas | Contêiner a contêiner (nó único) | Contentor para o exterior (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 modo bridge através do switch 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: 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 | Bom para multi-nó; necessário para o Docker Swarm, disponível no Kubernetes | Mesma sub-rede: ligaçã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 um segundo endpoint de container ligado à rede NAT no Windows Server 2016 ou uma 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 | Usado para Kubernetes e Microsoft Software Designed Network (SDN) | Mesma sub-rede: conexão em ponte através de Hyper-V comutador virtual Cross Subnet: Endereço MAC do contêiner reescrito na entrada e saída e roteado. |
Endereço MAC do container | |
reescrito na entrada e saída | Mesma sub-rede: ligação em ponte Cross Subnet: roteado através do adaptador de rede virtual de gerenciamento no WSv1809 e superior |
|||
L2Tunnel | Apenas Azure | Sub-rede Same/Cross: Redirecionado ao switch virtual Hyper-V do host físico onde a política é aplicada. | O tráfego deve passar pelo gateway de rede virtual do Azure | Mesmo/Cruzamento de Sub-rede: Encaminhado ao switch virtual Hyper-V do host físico 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. Eis 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 de 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.