Partilhar 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 máquinas virtuais (VMs) e quando você pode querer 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, consulte Windows e contêineres.

Arquitetura de contêineres

Um contêiner é um silo leve e isolado para executar um aplicativo no sistema operacional host. Os contêineres são construídos sobre o 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 que são executados no modo de usuário, conforme mostrado neste diagrama.

Diagrama de arquitetura mostrando como os contêineres são executados sobre o kernel

Arquitetura de máquina virtual

Em contraste com os 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.

Funcionalidade Máquina virtual Contentor
Isolamento Fornece isolamento completo do sistema operacional host e 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 Operativo Executa um sistema operacional completo, incluindo o kernel, exigindo mais recursos do sistema (CPU, memória e armazenamento). Executa a parte do modo de usuário de um sistema operacional e pode ser adaptado para conter apenas os serviços necessários para seu aplicativo, usando menos recursos do sistema.
Compatibilidade de hóspedes Executa praticamente qualquer sistema operacional dentro da máquina virtual. Executa-se na mesma versão do sistema operativo que o host, (o isolamentoHyper-V permite-lhe executar versões anteriores do mesmo sistema operativo em um ambiente leve de VM).
Implantação Implantar VMs individuais usando o Windows Admin Center ou o Hyper-V Manager; implantar várias VMs usando o PowerShell ou o System Center Virtual Machine Manager. Implantar contêineres individuais usando o Docker via linha de comando; implantar vários contêineres usando um orquestrador, como o Serviço Kubernetes do Azure.
Atualizações e upgrades do sistema operacional Transfira e instale atualizações do sistema operativo 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 dentro de um contentor é a mesma coisa:
  1. Edite o arquivo de compilação da imagem do contêiner (conhecido como Dockerfile) para apontar para a versão mais recente da imagem base do Windows.
  2. Reconstrua sua imagem de contêiner com essa nova imagem base.
  3. Envie a imagem do contêiner para o registro do contêiner.
  4. Reimplante usando um orquestrador.
    O orquestrador fornece automação poderosa para fazer isso em escala. Para obter detalhes, consulte Tutorial: Atualizar um aplicativo no Serviço Kubernetes do Azure.
Armazenamento persistente Use um disco rígido virtual (VHD) para armazenamento local para uma única VM ou um compartilhamento de arquivos SMB para armazenamento compartilhado por vários servidores. Use Discos do Azure para armazenamento local para um único nó ou Arquivos do Azure (compartilhamentos SMB) para armazenamento compartilhado por vários nós ou servidores.
Balanceamento de carga O balanceamento de carga das máquinas virtuais move as VMs em execução para outros servidores num cluster de failover. Os contentores em si 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 sendo reiniciado no novo servidor. Se um nó de cluster falhar, todos os contêineres em execução nele serão rapidamente recriados pelo orquestrador em outro nó de cluster.
Ligação em 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 obter mais informações, consulte sobre a rede de contentores do Windows.