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.
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.
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:
|
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. |