Pequena introdução a Docker para desenvolvedores
- #Docker
Crédito da imagem "Containers" by tsuna72 is licensed under CC BY 2.0
Introdução
Dando sequência ao artigo anterior, onde falei um pouco sobre a criação de ambientes virtuais para isolar a criação de um ambiente de desenvolvimento, nestes artigo falarei um pouco mais sobre outra forma de isolamento de ambiente, utilizando o conceito de contêineres.
O que é Docker?
Segundo a página do próprio Docker: “Docker é uma plataforma aberta para desenvolver, embarcar e executar aplicações”(em tradução livre).
Ele permite você criar e executar aplicações independentes da sua infraestrutura, organizando em contêineres.
Mas o que diabos é um contêiner?
Um contêiner Linux é uma camada isolada do sistema que contém um conjunto de processos que permite executar uma aplicação de forma isolada.
Essa camada é portátil, dessa forma você consegue executar um contêiner independente da plataforma que esteja executando. O conceito de contêiner e isolamento é um tanto antigo, mas ganhou notoriedade ultimamente.
Como funciona esse tal de contêiner?
O contêineres fornecem uma camada de aplicação acima do sistema que a hospeda. Essa camada contém apenas o suficiente para a execução portátil da aplicação. Contem algumas aplicações para o bom funcionamento. Algumas contém o gerenciador de pacotes para poder instalar dependências para executar.
Para se ter uma ideia, uma imagem Alpine, criada para ser executada em contêineres, tem aproximadamente 5MB de tamanho.
E qual a diferença de contêiner para virtualização?
A ideia aqui não é aprofundar muito, mas precisamos entender rapidinho a diferença aqui.
Quando falamos de virtualização entendemos que existe dois conceitos maiores: host e guest.
O sistema host, vai ser aquele que vai dividir a sua infraestrutura. Ele executará um Hypervisor, que seria uma plataforma que vai fornecer e simular a parte física do computador.
O sistema guest, vai usar a infraestrutura virtual cedida pelo host. Você vai instalar todo o sistema operacional com as suas dependências para executá-lo. Ou seja, você terá uma máquina “completa” virtualizada.
O sistema de contêineres não necessita a criação de uma infraestrutura virtual. Ele utiliza uma fração da estrutura do sistema host, que pode ser limitada ou não na configuração. E aplica camada de software para poder executar.
Para se ter uma pequena ideia, uma imagem Alpine, que é um pequeno sistema Linux para aplicações em contêineres possui aproximadamente 6MB
Pra que serve?
No fim das contas o sistema de contêineres funciona para acabar com a desculpa do desenvolvedor: “Na minha máquina funciona!” Haha. Mas vai além disso. Permite trazer portabilidade, escalabilidade, além de auxiliar em outras boas práticas para desenvolvimento e gerenciamento de fluxo de desenvolvimento.
E como eu começo no docker?
Não tenho a intenção de exaurir todas as opções e configurações do Docker, caso queiram um tutorial de instalação, me falem aqui, caso não, a documentação disponível em https://docs.docker.com/get-docker/ cobre várias formas de instalação de acordo do sistema operacional.
Em breve, escreverei mais artigos considerando aspectos mais práticos da utilização desses conceitos no desenvolvimento de aplicações.
Me sigam aqui e no meu Linkedin, estou tentando criar o hábito de escrever para compartilhar meu conhecimento e minha trilha de aprendizado
Referências
1. https://docs.docker.com/get-started/overview/
2. https://www.redhat.com/pt-br/topics/containers/whats-a-linux-container