Com relação aos seus pontos principais:
O Docker e o KVM têm maneiras de salvar seu estado atual, sem nenhum benefício adicional aqui
Só que como eles armazenam seu estado é diferente, e um método ou outro pode ser mais eficiente. Além disso, você não pode salvar 100% do estado de um contêiner com segurança.
Tanto o Docker quanto o KVM podem receber IPs separados para uso em rede
Dependendo do sistema de VM e contêiner usado, isso pode ser mais fácil de configurar para VMs do que para contêineres. Isso é especialmente verdadeiro se você quiser uma interface de camada 2 dedicada para o contêiner VM /, que quase sempre é mais fácil de fazer com uma VM.
O Docker e o KVM separam programas em execução e são instalados em conflito com os processos de execução do host
A VM faz melhor do que contêineres. Os contêineres ainda estão fazendo chamadas do sistema nativo para o sistema operacional host. Isso significa que eles podem potencialmente diretamente explorar quaisquer erros nessas chamadas do sistema. As VMs têm seu próprio sistema operacional, então elas são muito melhores isoladas.
O Docker e o KVM fornecem maneiras fáceis de escalar com o crescimento das empresas
Isso é quase o mesmo, embora eu pessoalmente tenha descoberto que a VM fez a escala certa um pouco melhor do que os recipientes feitos corretamente (muito provavelmente porque as VMs descarregaram os problemas de permissões no hardware, enquanto os containers precisam de software para lidar com isso).
Ambos fornecem métodos simples de mover instâncias para hosts diferentes
Não, não exatamente. Ambos podem fazer a migração offline, mas muitos sistemas de contêiner não podem fazer migração ao vivo (ou seja, mover um contêiner em execução de um host para outro). A migração ao vivo é muito importante por razões de gerenciamento se você estiver executando em qualquer escala razoável (Precisa executar atualizações no host? Migrar tudo para outro sistema, reinicializar o host, migrar tudo do segundo host para o primeiro, reinicie isso, rebalance.).
Alguns pontos extras:
- Geralmente, as VMs têm mais facilidade para trabalhar com opções de alta disponibilidade. Isso não quer dizer que os contêineres não tenham essas opções, apenas que normalmente são mais fáceis de trabalhar e adaptam o código do aplicativo às VMs. As
- VMs são um pouco mais fáceis de migrar diretamente de e para a hospedagem na nuvem (você não precisa se importar tanto com o ambiente de hospedagem subjacente).
- As VMs permitem que você execute uma plataforma diferente do sistema operacional host. Mesmo diferentes distribuições Linux têm diferenças suficientes em sua configuração do kernel, o material escrito para um não é completamente garantido para funcionar em outro.
- As VMs oferecem melhor controle da possível superfície de ataque. Com os contêineres, você simplesmente não consegue se livrar do fato de que o código do seu sistema operacional host ainda está na memória e, portanto, um vetor de ataque em potencial. Com as VMs, você está executando um sistema operacional isolado, para que você possa reduzi-lo ao mínimo absoluto do que realmente precisa.
- A execução de um grupo de contêineres relacionados em uma VM oferece uma maneira fácil de iniciar e interromper esse grupo de contêineres juntos.