Docker vs Virtual Machines
Vamos fazer juntos uma exploração de diferentes casos de uso, desempenho, gerenciamento, portabilidade, segurança entre outros.
A virtualização de recursos de hardware físico tem sido uma das tendências mais promissoras do século 21. Houve um acordo silencioso de que a computação moderna precisa ir além dos limites do hardware fisico. Dependendo de quem você perguntar, o Docker e as máquinas virtuais tem suas próprias vantagens distintas.
O que é Docker?
Docker é uma ferramenta de código aberto que usa containers para criar, implantar e gerencias aplicativos distribuídos.
Os desenvolvedores usam containers para criar pacotes para aplicativos que incluem todos os componentes principais que são necessários para executar o aplicativo isoladamente.
Desde que o Docker foi lançado em 2014, ele alcançou um status aclamado pela crítica. Muitas organizações optam por usar o Docker em vez das máquinas virtuais devido aos benefícios de desempenho.
O que é uma Máquina Virtual?
Uma máquina virtual é um arquivo,que atua como um computador físico, usa os recursos físicos do dispositivo em que está operando para replicar o ambiente de um dispositivo físico.
Embora uma máquina virtual use os recursos do computador para funcionar, ela na verdade fornece seu próprio hardware virtual. O hardware virtual de uma máquina virtual inclui CPU,memoria,discos rígidos e interfaces de rede.
As máquinas virtuais são isoladas do sistema do dispositivo físico e operam dentro de uma sandbox.
Isso os torna ideais para a criação de backups e execução de software.
Por que preciso usar o Docker?
O Docker é usado como alternativa porque são mais leves em termos de recursos do que as máquinas virtuais. Os containers compartilham o sistema operacional,enquanto as máquinas virtuais são projetadas para emular hardware virtual.
O Docker usa o mecanismo Docker que reside em uma instância do Linux, em vez das máquinas com uso intensivo de recursos virtuais usadas pelas máquinas virtuais. Essa estrutura significa que os containers do Docker têm o potencial de sustentar mais de cinco vezes a quantidade de instancias de aplicativos de servidor que você poderia com uma máquina virtual.
Outra grande vantagem que foi outro grande motivo do sucesso do docker, foi pelo fato dos desenvolvedores poderem personalizar e adicionar seu próprio código para conseguir um ambiente mais enxuto e que seja um espelho do ambiente de produção.
Em resumo alem da economia e do baixo custo do docker, os sistemas feitos usando um docker podem ser usados tanto na maquina local quanto em nuvem.
Por que preciso de uma máquina virtual?
As máquinas virtuais continuam sendo extremamente importantes, eles ainda fornecem um meio confiável de limitar os custos que vêm com o hardware físico. A virtualização de sua infraestrutura com máquinas virtuais torna o uso mais eficiente de seus recursos de rede.
Por exemplo, você não precisa desembolsar os recursos de energia e ventilador para sustentar uma máquina virtual.
Você também pode provisionar recursos com muito mais eficiência com máquinas virtuais. As máquinas virtuais podem ser migradas de um servidor físico para outro para garantir que os recursos de computação sejam distribuídos uniformemente entre os dispositivos.
As máquinas virtuais também diminuem o risco de falha de sua infraestrutura.
Como consequência, muitos administradores começaram a usar máquinas virtuais como uma solução de recuperação de desastres e para fazer backup de dados.
Docker vs Máquinas Virtuais frente a frente
Desempenho
Um container pode compartilhar um kernel e bibliotecas de aplicativos de uma maneira que as máquinas virtuais não podem.
Docker requer menos recursos de computação do que as máquinas virtuais, o que oferece uma melhor experiência dentro do aplicativo.
O Docker consome menos recursos e pode iniciar muito mais rápido do que as máquinas virtuais. O motivo é que as máquinas virtuais precisam carregar um sistema operacional a cada inicialização. Da mesma forma, você não precisa alocar recursos para containers como faz com as máquinas virtuais.
Gestão
Em termos de gerenciamento, cada uma dessas tecnologias oferece uma abordagem mais flexível para o provisionamento de recursos. No entanto essas duas tecnologias ainda precisam ser gerenciadas com eficácia para funcionar bem em seu ambiente. Com a tecnologia de container, tudo se resume a gerencias questões de segurança.
Com as máquinas virtuais, a complexidade se resume ao gerenciamento de recursos virtuais. Por exemplo, você precisa de largura de banda e capacidade de processamento para oferecer suporte a máquias virtuais.
O administrador também precisa levar em consideração como ele reconcilia o uso da máquina virtual com os recursos disponíveis em toda a rede.
Existe o risco de exceder os recursos disponíveis ou de uma única falha de hardware pode apagar um monte de máquinas de uma só vez.
Portabilidade
Os containers do Docker podem ser transportados facilmente porque não têm sistemas operacionais separados.
Em contraste, as máquinas virtuais não são tão portáteis pois cada uma tem seu próprio sistema operacional, pois o sistema operacional não pode ser transferido para outra plataforma e funcionar bem.
Em ambientes onde você precisa implantar uma variedade de aplicativos em diferentes problemas, é melhor usar o Docker.
Segurança
Esta é uma área particularmente complexa porque há muitos fatores a serem discutidos, desde as vulnerabilidades inatas do Docker até o ponto único de falha do hypervisor de uma máquina virtual.
Custo
O custo do Docker e das máquinas virtuais é outra área dificil de medir.
Os container tem um TCO ou custo total de propriedade mais baixo do que a virtualização de hardware. A razão por trás disso é que os containers do Docker usam recursos com mais eficiência. Cada máquina virtual tem seu próprio sistema operacional que precisa ser sustentado pelo sistema host.
O Docker elimina esse problema usando um sistema operacional para todos os seus aplicativos. Os containers compartilha um sistema operacional na tentativa de minimizar os requisitos de recursos.
Em comparação, as máquinas virtuais teriam um sistema operacional para coda aplicativo, o que significa que há mais recursos pelos quais você precisa pagar.
Expero ter conseguido trazer de fora resumida uma explicação sobre a diferença entre Docker e VM.
Poxa muito bacana a informação, venho dando uma olhada em Docker, já tenho um pequeno teste com ele e falta me aprofundar mais. Na verdade ter mais segurança em usá-lo, e isso só estudando e testando.
Vale a pena dar uma estudada em uma ferramenta intermediária entre Docker e VM chamada LXD. https://www.tabnews.com.br/gustavohenrique/lxd-linux-container-como-alternativa-ao-docker