Contêineres vs. máquinas virtuais
Aplica-se a: Windows Server 2022, Windows Server 2019 e Windows Server 2016
Este tópico aborda algumas das principais semelhanças e diferenças entre contêineres e VMs (máquinas virtuais) e quando pode ser ideal usar cada um deles. Os contêineres e as VMs têm os próprios usos. Na verdade, muitas implantações de contêineres usam VMs como o sistema operacional do host em vez da execução direta no hardware, especialmente ao executar contêineres na nuvem.
Para obter uma visão geral dos contêineres, confira Windows e contêineres.
Arquitetura do contêiner
Um contêiner é um silo leve e isolado para executar um aplicativo no sistema operacional do host. Os contêineres se baseiam no kernel do sistema operacional do host (que pode ser considerado como o encanamento subterrâneo 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 da máquina virtual
Ao contrário de contêineres, as VMs executam um sistema operacional completo, incluindo o próprio kernel, conforme mostrado neste diagrama.
Contêineres vs. máquinas virtuais
A tabela a seguir mostra algumas das semelhanças e diferenças dessas tecnologias complementares.
Recurso | Máquina virtual | Contêiner |
---|---|---|
Isolamento | Fornece isolamento completo do sistema operacional do 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 o modo de isolamento do Hyper-V para isolar cada contêiner em uma VM leve). |
Sistema operacional | 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 do convidado | Executa praticamente qualquer sistema operacional dentro da máquina virtual | É executado na mesma versão do sistema operacional do host (o isolamento do Hyper-V permite executar versões anteriores do mesmo sistema operacional em um ambiente de VM leve) |
Implantação | Implante VMs individuais usando o Windows Admin Center ou o Gerenciador do Hyper-V; implante várias VMs usando o PowerShell ou o System Center Virtual Machine Manager. | Implante contêineres individuais usando o Docker por meio da linha de comando; implante vários contêineres usando um orquestrador, como o Serviço de Kubernetes do Azure. |
Atualizações e upgrades do sistema operacional | Baixe e instale as atualizações do sistema operacional em cada VM. A instalação de uma nova versão do sistema operacional exige o upgrade ou, muitas vezes, apenas a geração de uma VM totalmente nova. Isso pode ser demorado, especialmente se você tem muitas VMs... | A atualização ou o upgrade dos arquivos do sistema operacional dentro de um contêiner é o mesmo:
|
Armazenamento persistente | Use um VHD (disco rígido virtual) para o armazenamento local de uma só VM ou um compartilhamento de arquivo SMB para o armazenamento compartilhado por vários servidores | Use os Discos do Azure para o armazenamento local para um só 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 da máquina virtual move as VMs 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 os contêineres em nós de cluster para gerenciar as alterações na carga e na 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 virtuais. | Usa uma exibição isolada de um adaptador de rede virtual, fornecendo um pouco menos de virtualização, o firewall do host é compartilhado com os contêineres, usando menos recursos. Para obter mais informações, confira Rede do contêiner do Windows. |