Compartilhar via


Contêineres versus máquinas virtuais

Aplica-se a: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016

Este tópico discute algumas das principais semelhanças e diferenças entre contêineres e VMs (máquinas virtuais) e quando talvez você queira usar cada um. Contêineres e VMs têm seus usos– na verdade, muitas implantações de contêineres usam VMs como o sistema operacional host em vez de serem executadas diretamente no hardware, especialmente ao executar contêineres na nuvem.

Para obter uma visão geral dos contêineres, confira Windows e contêineres.

Arquitetura de contêiner

Um contêiner é um silo leve e isolado para executar um aplicativo no sistema operacional host. Os contêineres se baseiam no kernel do sistema operacional host (que pode ser considerado como o encanamento enterrado do sistema operacional) e contêm apenas aplicativos e algumas APIs e serviços leves do sistema operacional executados no modo de usuário, conforme mostrado neste diagrama.

Diagrama de arquitetura mostrando como os contêineres são executados na parte superior do kernel

Arquitetura da máquina virtual

Em contraste com contêineres, as VMs executam um sistema operacional completo, incluindo seu próprio kernel, conforme mostrado neste diagrama.

Diagrama de arquitetura mostrando como as VMs executam um sistema operacional completo ao lado do sistema operacional host

Contêineres versus máquinas virtuais

A tabela a seguir mostra algumas das semelhanças e diferenças dessas tecnologias complementares.

Característica Máquina virtual Conteiner
Isolamento Fornece isolamento completo do sistema operacional host e de outras VMs. Isso é útil quando um limite de segurança forte é crítico, como hospedar aplicativos de empresas concorrentes no mesmo servidor ou cluster. Normalmente, fornece isolamento leve do host e de outros contêineres, mas não fornece um limite de segurança tão forte quanto uma VM. (Você pode aumentar a segurança usando Hyper-V modo de isolamento para isolar cada contêiner em uma VM leve).
Sistema Operacional Executa um sistema operacional completo, incluindo o kernel, exigindo assim mais recursos do sistema (CPU, memória e armazenamento). Executa a parte do modo de usuário de um sistema operacional e pode ser adaptada para conter apenas os serviços necessários para seu aplicativo, usando menos recursos do sistema.
Compatibilidade com convidado Executa praticamente qualquer sistema operacional dentro da máquina virtual. É executado na mesma versão do sistema operacional que o host (o isolamento do Hyper-V permite executar versões anteriores do mesmo sistema operacional em um ambiente de VM leve).
Implantação Implantar VMs individuais usando o Windows Admin Center ou Hyper-V Manager; implantar várias VMs usando o PowerShell ou o System Center Virtual Machine Manager. Implantar contêineres individuais usando o Docker por meio da linha de comando; implantar vários contêineres usando um orquestrador, como o Serviço de Kubernetes do Azure.
Atualizações e melhorias do sistema operacional Baixe e instale atualizações do sistema operacional em cada VM. A instalação de uma nova versão do sistema operacional requer a atualização ou, muitas vezes, apenas a criação de uma VM totalmente nova. Isso pode ser demorado, especialmente se você tiver muitas VMs. Atualizar ou fazer upgrade dos arquivos do sistema operacional em um contêiner é a mesma coisa.
  1. Edite o arquivo de build da imagem de contêiner (conhecido como Dockerfile) para apontar para a versão mais recente da imagem base do Windows.
  2. Recompile sua imagem de contêiner com essa nova imagem base.
  3. Envie a imagem do contêiner para o registro de contêiner.
  4. Reimplantar usando um orquestrador.
    O orquestrador fornece automação avançada para fazer isso em escala. Para obter detalhes, consulte Tutorial: Atualizar um aplicativo no Serviço de Kubernetes do Azure.
Armazenamento persistente Use um VHD (disco rígido virtual) para armazenamento local para uma única VM ou um compartilhamento de arquivos SMB para armazenamento compartilhado por vários servidores. Use os Discos do Azure para armazenamento local para um único nó, ou os Arquivos do Azure (compartilhamentos SMB) para armazenamento compartilhado por vários nós ou servidores.
Balanceamento de carga O balanceamento de carga das VMs move máquinas virtuais em execução para outros servidores em um cluster de failover. Os próprios contêineres não se movem; Em vez disso, um orquestrador pode iniciar ou parar automaticamente contêineres em nós de cluster para gerenciar alterações na carga e disponibilidade.
Tolerância a falhas As VMs podem fazer failover para outro servidor em um cluster, com o sistema operacional da VM reiniciando no novo servidor. Se um nó de cluster falhar, todos os contêineres em execução nele serão recriados rapidamente pelo orquestrador em outro nó de cluster.
Rede Usa adaptadores de rede virtual. Usa uma exibição isolada de um adaptador de rede virtual, fornecendo um pouco menos de virtualização – o firewall do host é compartilhado com contêineres – enquanto usa menos recursos. Para mais informações, confira Rede de contêineres do Windows.