Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Introdução
A partir do Windows Server 2022, dois tipos de contêineres estão disponíveis: Contêineres do Windows Server e contêineres de Hyper-V. Cada tipo de contêiner suporta a versão Server Core ou Nano Server do Windows Server 2022.
Essas configurações têm implicações de desempenho diferentes, que detalhamos abaixo para ajudá-lo a entender qual é o ideal para seus cenários. Além disso, detalhamos as configurações que afetam o desempenho e descrevemos as vantagens e desvantagens de cada uma dessas opções.
Contêiner do Windows Server e contêineres do Hyper-V
Contêiner do Windows Server e contêineres Hyper-V oferecem muitos dos mesmos benefícios de portabilidade e consistência, mas diferem em termos de suas garantias de isolamento e características de desempenho.
Os Contêineres do Windows Server fornecem isolamento do aplicativo por meio da tecnologia de isolamento de namespace e processo. Um contêiner do Windows Server compartilha um kernel com o host de contêiner e todos os contêineres em execução no host.
Hyper-V Contêineres expandem o isolamento fornecido pelos Contêineres do Windows Server executando cada contêiner em uma máquina virtual altamente otimizada. Nessa configuração, o kernel do host de contêiner não é compartilhado com os contêineres de Hyper-V.
O isolamento extra fornecido pelos contêineres Hyper-V é obtido em grande parte por uma camada de isolamento de hipervisor entre o contêiner e o hospedeiro de contêiner. Isso afeta a densidade de contêineres, pois, ao contrário dos Contêineres do Windows Server, pode ocorrer menos compartilhamento de arquivos e binários do sistema, resultando em um volume geral maior de armazenamento e memória. Além disso há a sobrecarga adicional esperada em alguns caminhos de rede, de E/S de armazenamento e de CPU.
Nano Server e Server Core
Contêineres do Windows Server e contêineres de Hyper-V oferecem suporte para o Server Core, saiba mais sobre as opções de imagem base do contêiner.
O Nano Server é um sistema operacional de servidor administrado remotamente otimizado para nuvens privadas e datacenters. Ele é semelhante ao Windows Server no modo Server Core, mas significativamente menor, não tem capacidade de logon local e só dá suporte a aplicativos, ferramentas e agentes de 64 bits. Ele ocupa muito menos espaço em disco, configura significativamente mais rápido e requer muito menos atualizações e reinicializações do que o Windows Server. Quando ele reinicia, reinicia muito mais rápido.
Tempo de inicialização do contêiner
O tempo de inicialização do contêiner é uma métrica fundamental em muitos dos cenários em que os contêineres oferecem o maior benefício. Dessa forma, entender como otimizar melhor o tempo de inicialização do contêiner é fundamental. Abaixo estão algumas vantagens e desvantagens dos ajustes para entender como aprimorar o tempo de inicialização.
Primeiro logon
A Microsoft envia uma imagem base para o Nano Server e o Server Core. A imagem base que é fornecida para o Server Core foi otimizada, removendo a sobrecarga de tempo de inicialização associada ao primeiro logon (OOBE). Esse não é o caso da imagem base do Nano Server. Porém, esse custo pode ser removido das imagens baseadas no Nano Server ao confirmar pelo menos uma camada na imagem de contêiner. Os próximos inícios do contêiner usando a imagem não gerarão o custo do primeiro logon.
Local do espaço temporário
Por padrão, os contêineres usam um espaço temporário na mídia da unidade do sistema do host do contêiner para o armazenamento durante o tempo de vida do contêiner em execução. Isso funciona como a unidade do sistema do contêiner e, portanto, muitas das gravações e leituras feitas na operação de contêiner seguem esse caminho. Quanto aos sistemas host em que a unidade do sistema existe em uma mídia magnética de disco giratório (HDDs), mas há uma mídia de armazenamento mais rápida disponível (HDDs ou SSDs mais rápidos), é possível mover o espaço de trabalho do contêiner para uma unidade diferente. Isso é obtido usando o comando dockerd –g. Esse comando é global e afetará todos os contêineres em execução no sistema.
Contêineres aninhados do Hyper-V
Hyper-V para Windows Server 2022 oferece suporte a hipervisor aninhado. Ou seja, a capacidade de executar uma máquina virtual de dentro de uma máquina virtual. Isso abre muitos cenários úteis, mas também exagera alguns impactos de desempenho que o hipervisor sofre, pois há dois níveis de hipervisores em execução acima do host físico.
Quanto aos contêineres, isso tem um impacto ao executar um contêiner do Hyper-V em uma máquina virtual. Como um contêiner de Hyper-V oferece isolamento por meio de uma camada de hipervisor entre si e o host do contêiner, quando o host do contêiner é uma máquina virtual baseada em Hyper-V, há uma sobrecarga de desempenho associada em termos de tempo de inicialização do contêiner, io de armazenamento, io de rede e taxa de transferência e CPU.
Armazenamento
Volumes de dados montados
Os contêineres oferecem a capacidade de usar a unidade de sistema host do contêiner no espaço temporário do contêiner. No entanto, o espaço temporário do contêiner tem um período de vida igual do contêiner. Ou seja, quando o contêiner for interrompido, o espaço temporário e todos os dados associados desaparecerão.
No entanto, há muitos cenários em que se deseja que os dados persistam independentemente do tempo de vida do contêiner. Nesses casos, damos suporte à montagem de volumes de dados do host do contêiner no contêiner. Quanto aos contêineres do Windows Server, há uma sobrecarga de caminho de E/S insignificante associada aos volumes de dados montados (desempenho quase nativo). No entanto, ao montar volumes de dados em contêineres Hyper-V, ocorre uma degradação no desempenho de E/S nesse caminho. Além disso, esse impacto é exagerado ao se executar contêineres Hyper-V dentro de máquinas virtuais.
Espaço de rascunho
Por padrão, os contêineres do Hyper-V e os contêineres do Windows Server fornecem um VHD dinâmico de 20 GB para o espaço temporário do contêiner. Para ambos os tipos de contêiner, o sistema operacional de contêiner ocupa uma parte desse espaço e isso é verdadeiro para cada contêiner iniciado. Portanto, é importante lembrar que cada contêiner iniciado tem algum impacto no armazenamento e, dependendo da carga de trabalho, pode gravar até 20 GB da mídia de armazenamento de backup. As configurações de armazenamento do servidor devem ser projetadas com isso em mente.
Rede
Contêineres do Windows Server e contêineres de Hyper-V oferecem vários modos de rede para atender melhor às necessidades de configurações de rede diferentes. Cada uma dessas opções apresenta suas próprias características de desempenho.
WinNAT (Conversão de Endereços de Rede do Windows)
Cada contêiner receberá um endereço IP de um prefixo IP privado interno (por exemplo, 172.16.0.0/12). Há suporte para o encaminhamento/mapeamento de porta do host do contêiner para os pontos de extremidade do contêiner. O Docker cria uma rede NAT por padrão quando o dockerd é executado pela primeira vez.
Desses três modos, a configuração nat é o caminho de E/S de rede mais caro, mas tem a menor quantidade de configuração necessária.
Contêineres do Windows Server usam uma vNIC do host para se conectar ao comutador virtual. Os contêineres do Hyper-V usam uma NIC de VM sintética (não exposta à VM do utilitário) para se conectar ao comutador virtual. Quando os contêineres estão se comunicando com a rede externa, os pacotes são roteados por meio do WinNAT com traduções de endereço aplicadas, o que incorre em alguma sobrecarga.
Transparente
Cada ponto de extremidade de contêiner está diretamente conectado à rede física. Os endereços IP da rede física podem ser atribuídos estaticamente ou dinamicamente usando um servidor DHCP externo.
O modo transparente é o menos caro em termos do caminho de E/S de rede, e os pacotes externos são transmitidos diretamente para a NIC virtual do contêiner, dando acesso direto à rede externa.
Ponte L2
Cada ponto de extremidade do contêiner estará na mesma sub-rede de IP que o host do contêiner. Os endereços IP devem ser atribuídos de forma estática a partir do mesmo prefixo do host do contêiner. Todos os pontos de extremidade de contêiner no host terão o mesmo endereço MAC por causa da tradução de endereço de Camada 2.
O Modo de Ponte L2 tem mais desempenho do que o modo WinNAT, pois fornece acesso direto à rede externa, mas com menos desempenho do que o modo Transparente, pois também introduz a tradução de endereço MAC.