Containers Docker: O que é, Funcionamento e Utilização.
No últimos anos, um dos assuntos que grande parcela dos Devs tem ouvido falar foi Docker. Mas o que seria o tal Docker que tanto falam? E esses tais containers? Nesse post iremos abordar o funcionamento e a utilização dos Containers Docker.
O que São Containers?
Para darmos um pontapé inicial no que seria containers devemos voltar ao passado para compreender melhor nosso presente e futuro.
Nos meados do ano 2000, a maioria das aplicações estavam rodando em um servidor físico, o que acarreta em grandes dificuldades na hora de uma implementação de software, mas como principal, do ponto de vista de negócio, uma perda de investimento. Já que muito provavelmente o pessoal que trabalha na infraestrutura da empresa investiria em servidores poderosíssimos (afinal, a última coisa que queremos é que o sistema parasse ou ficasse lento), isso acarretava no que? Basicamente, os servidores, em sua grande maioria, rodavam num máximo de 10%, 20% da capacidade total. Fazendo com o que houvesse a grande perda de capital.
Para resolver o problema dos servidores físicos por aplicação, foi criado o Hypervisor, como podemos ver na figura abaixo:

Com essa tecnologia, podemos ter somente um servidor físico com vários sistemas operacionais utilizando o mesmo hardware, fazendo o aproveitamento melhorado da capacidade do servidor. Fazendo-se possível virtualizar vários servers em um único servidor físico. Isso significava, ter a capacidade de aproveitar aqueles 80% de hardware que antes ficavam sobrando.
Esta abordagem de VMs (máquinas virtuais) continuava tendo alguns contratempos. Por exemplo, cada VM tem a necessidade de conter um sistema operacional (Windows ou Linux) para que seja possível rodar as aplicações, mas o que isso significaria na prática? Basicamente, o problema de pagarmos licenças Windows, por exemplo, persistia. Porém, o problema mais importante que não era solucionado a configuração do S.O. para que a aplicação rodasse sem problemas, mas qualquer alteração no sistema operacional poderia acarretar no mal funcionamento do software, gerando uma manutenção gigantesca para as diversas máquinas virtuais da infra estrutura gerando mais custo. Dessa forma, por mais que o Hypervisor tenha sido disruptivo, existiam os problemas acima citados e para superá-los surgiram os famigerados Containers.
Os Containers e as máquinas virtuais possuem benefícios semelhantes quando falamos de isolamento e alocação de recursos, porém as máquinas virtuais, como o próprio nome já deixa subentendido, virtualizam o hardware físico para que seja possível utilizar vários SOs, já os containers não fazem essa virtualização do hardware, mas sim a camada de aplicação do SO.
Veja a imagem abaixo:

Segundo o site do Docker, o container seria uma unidade padrão de software que empacota o código e todas as suas dependências para que o aplicativo seja executado de forma rápida e confiável de um ambiente de computação para outro. Isso traz agilidade e menos dor de cabeça para mudanças durante implementações e atualização do aplicativo, não sendo necessário modificar todo um s.o. para rodar sua aplicação.
Além disso, fazendo a utilização dos Containers, o servidor suporta mais aplicações. Isso ocorre pois não existe mais o fardo de virtualizar o hardware inteiro. Logo, aqueles recursos que os SOs consumiam, sobram e podem ser direcionados para novas aplicações. Olhando pelo lado do desenvolvedor, os containers vêm para facilitar a nossa vida. Com eles, podemos moldar um ambiente inteiro e gerenciá-lo de maneira muito mais simples do que configurar um sistema operacional inteiro somente para rodar uma pequena aplicação, por exemplo. Visto isso, pode-se dizer que o containers trazem para o desenvolvimento de arquitetura de software enorme flexibilidade e economia, além de conseguir tornar muito similar os ambientes de desenvolvimento e produção.
Matheus Mazzoni
Leia Também:
Como facilitar o desenvolvimento mobile? Qual a relação com DF-e?
Linux: uma perspectiva para o desenvolvedor
5 extensões VS Code para desenvolvimento web
Gostou do Post? Caso você não conheça nossa API entre em contato conosco!