Docker para desenvolvedores — Que vantagem eu teria com Docker ?

Você que é desenvolvedor, assim como eu, com certeza conhece e já deve ter usado a frase: “Mas na minha máquina roda”.

Bom, normalmente isso acontece porque já temos todo o ambiente configurado localmente. O problema é que para ambientes de produção/homologação, não temos todas as bibliotecas e programas instalados. E quando precisamos replicar o ambiente de desenvolvimento, na maioria dos casos, acabamos esquecendo de alguma coisa.

“Certo, mas hoje já temos máquinas virtuais com todas as nossas configurações, e replicação e reconstrução não são mais problema.”

Tem razão. Na última década, o uso de máquinas virtuais aumentou significativamente, justamente porque é fácil, seguro, e resolve esse tipo de problema.

“Então, por que usar Docker ?”

Para explicar melhor, vamos fazer uma simples analogia. Vou usar um exemplo similar ao que ouvi outro dia, do Rafael Gomes.

Imagine que você é um distribuidor de produtos para o mundo inteiro, e faça isso utilizando navios. Antigamente, para fazer a distribuição, só era possível transportar um tipo de produto por navio. Porém, com o passar do tempo, isso se tornou insustentável, e a solução foi usar navios menores para separar as cargas — diminuindo o custo e aproveitando o navio maior. Mas lembre-se que esses navios pequenos continuam sendo puxados por esse navio maior.

Pronto. Basicamente, isso é a virtualização.

O problema disso é que você precisa ter combustível e toda estrutura em cada navio.

Muito ruim, não?

Por isso foram criados os containers. Ao invés de vários navios, você tem somente 1 navio em que pode transportar diversos produtos — e o custo do containers é muito menor que o de um navio pequeno. Com isso você reaproveita toda estrutura do navio, só depende do container específico para seu produto, e mantém seu produto isolado dos outros.

A ideia do Docker é exatamente essa. Ao invés de subir várias máquinas virtuais, você só precisa de uma máquina, e pode rodar várias aplicações sem que haja conflitos entre elas. Todas as bibliotecas e recursos necessários a cada aplicação, deverão estar no container. Com isso, além de não precisar instalar tudo a cada novo ambiente, você diminui o uso de recursos e mantém a configuração e as bibliotecas da sua aplicação isoladas de outras aplicações, evitando conflitos.

Para resumir, a imagem a seguir mostra uma comparação entre máquina virtual e containers. Fica claro o consumo maior de recursos nas máquinas virtuais, uma vez que para cada aplicação precisamos instalar e carregar um sistema operacional.

Figura 01

Agora que entendemos melhor as vantagens do Docker e a diferença em relação à máquina virtual, no próximo artigo veremos como subir uma stack básica utilizando o Docker Compose.

Gostou? Não se esqueça de Recomendar e Compartilhar!