Fala pessoal! Tudo bem? Cada vez mais o Docker é popularizado no meio dos devs e em projetos por aí. Não é exagero dizer que o Docker tem potencial de virar algo que todo desenvolvedor deveria saber, assim como git. Mas, por que ele está se popularizando tanto? O que são esses famosos containers que todo mundo fala sobre o Docker? Esses são alguns temas que quero abordar no artigo de hoje, então, se você pensa em usar o Docker no seu projeto, ou até, em somente estudar ele, esse artigo pode ser útil para você.

O que é Docker?

De forma bem abreviada, o Docker ele possibilita você “empacotar” seu serviço ou sua aplicação, de forma que tal serviço ou aplicação, execute em qualquer sistema de forma igual. Mas, porque usar um tipo de serviço desse, se você poderia simplesmente alocar sua aplicação em uma maquina virtual, e então, acessar a mesma em “qualquer lugar”? Nesse ponto mora o “pulo do gato”! O Docker usa o kernel do linux, juntamente com cGroups e namespaces, para executar os processos. Dessa forma, não é preciso executar junto da sua aplicação, serviços ou aparatos que seriam dependências apenas do sistema operacional, e não da sua aplicação. Se você usa windows, peço que você faça um teste agora. Abra o gerenciador de arquivos e vá até à aba “serviços”. Não é exagero falar que, provavelmente, são centenas de serviços executando simplesmente na inicialização do windows. Dessa mesma forma acontecem com outros sistemas operacionais. Na execução do Docker, através de um container, ele não precisa executar praticamente nenhum serviço externo a sua aplicação, sendo assim, a inicialização da sua aplicação pode se tornar mais “leve” e mais rápida.

Fonte: https://www.docker.com/resources/what-container/

O que é um container?

Um container é onde de fato é guardado sua aplicação ou serviço. É uma unidade de software que inclui todos os componentes necessários para executar uma aplicação, incluindo bibliotecas, dependências e configurações. Um caso simples é se um desenvolvedor precisa subir uma aplicação web, onde a mesma usa duas apis diferentes, por exemplo. Uma opção viável é dividir cada API em um container individual, assim eles operariam em ambientes separados. O frontend seria mantido em um terceiro container. Com essa abordagem, cada componente funciona de forma independente, mesmo que o frontend dependa das duas APIs para funcionar. Em caso de problemas, a manutenção do código seria mais simples e não afetaria as outras aplicações.

Fonte: https://www.gta.ufrj.br/ensino/eel879/trabalhos_v1_2017_2/docker/components.html

Quais as vantagens do Docker?

Usar o Docker oferece várias vantagens para desenvolvedores e equipes de TI, como:

  • Portabilidade: Como os containers são independentes do sistema operacional e da infraestrutura subjacente, as aplicações podem ser executadas em qualquer lugar, desde um laptop até um data center em nuvem.
  • Isolamento: Cada container é isolado do ambiente do host e de outros containers, o que significa que as aplicações podem ser executadas com segurança e sem interferência de outras aplicações.
  • Eficiência: Os containers são leves e requerem menos recursos do que as máquinas virtuais tradicionais, o que significa que as aplicações podem ser executadas com menos overhead e mais eficiência.
  • Escalabilidade: O Docker facilita a implantação de aplicações em vários ambientes e a escala de acordo com as necessidades, permitindo que as equipes de TI respondam rapidamente às demandas do negócio.

Conclusão

O Docker é uma ferramenta poderosa para os desenvolvedores e equipes, que permite criar, implantar e gerenciar aplicações de forma portátil, eficiente e escalável. Ao usar o Docker, as equipes de devs podem aumentar a produtividade, reduzir os custos e responder rapidamente às demandas do negócio. E, da mesma forma que ele é útil em aplicações grandes e escaláveis, ele pode também ser útil em aplicações pequenas. Por exemplo, é possível executar bancos de dados nele como um serviço. Em uma aplicação, executando em localhost, você pode ter várias versões do banco de dados dela, ou até, usar mais de um banco de dados apenas iniciando serviços diferentes com o Docker. Se você é desenvolvedor, ou até, só planeja fazer uma aplicação escalável, o Docker com certeza é uma opção viável para você estudar e verificar todas as possibilidades com ele.