Docker: O que é, containers e como aplicar nos seus projetos

Docker: O que é, containers e como aplicar nos seus projetos

Você já deve ter ouvido falar sobre o Docker e ficado com aquela pulga atrás da orelha, se perguntando o que ele realmente faz e o que realmente seria esse termo container. Nesse artigo abordaremos esses temas.

Mas afinal o que seria o Docker?

O Docker é uma plataforma open source desenvolvida pela Docker Inc. que visa a criação e a facilitação na administração de ambientes isolados. Sendo assim, ele possibilita o empacotamento de uma aplicação ou ambiente dentro de um container, tornando-se manejável para qualquer outro host que tenha o Docker instalado nele.

Desse modo, você pode criar, implantar, migrar, copiar, etc de um ambiente para com maior facilidade.


Docker é uma máquina virtual?

Você deve estar se perguntando isso, certo? Mas a resposta para essa pergunta é não. O Docker se parece com uma máquina virtual super leve, mas não se trata de fato de uma máquina virtual.

A seguir, irei fazer um breve resumo sobre containers e máquinas virtuais para melhor entendimento.

Máquina virtual

A virtualização de máquina acontece por meio de um empacotamento de determinada aplicação em um modelo padrão com o seu próprio ambiente operacional.

Sendo assim, independente da máquina que você estará executando a aplicação, as suas configurações serão as mesmas desde a camada do sistema operacional, até as camadas de bibliotecas e dependências necessárias para aplicação.

Pensando na arquitetura de cluster de um banco de dados, se você possui uma estrutura dividida com Load Balance (estrutura balanceada) entre 15 Vps. Todas as 15 Vps precisarão ter a mesma configuração e o mesmo funcionamento.

Parando para pensar um pouco, imagine você ter que fazer tudo isso de forma manual…

Desse modo, com o uso da virtualização, todas essas configurações irão seguir o modelo feito de forma automática. Caso passe por uma situação parecida, utilize gerenciadores de máquinas virtuais para facilitação da sua vida.

Containers

Assim como as máquinas virtuais, os containers também fazem empacotamento, mas ele não virtualizará todo o ambiente da máquina. Desse modo, ele irá trabalhar apenas em cima da aplicação e de suas dependências, fazendo com que a virtualização seja apenas a nível de sistema operacional e não da máquina em si.

Sendo assim o, você terá o benefício de executar ambientes isolados dentro de apenas uma Vps.

Além disso, o tamanho do sistema virtual será bem mais reduzido em comparação com uma máquina virtual, já que o container só irá integrar as configurações de sua aplicação e não de uma máquina virtual inteira.

Neste caso, o melhor exemplo para uso de containers é o Docker, pelo fato de ser open source, simples e colaborativo se tornou a maior referência quando se trata de container.


Na imagem acima temos um bom exemplo da diferença entre container e máquina virtual.

Se olharmos para virtualização, podemos perceber que cada nova aplicação rodando dentro de uma máquina física é replicada o ambiente como um todo, ou seja, dentro de cada máquina virtual existe todos o sistema da base de arquivos e um sistema operacional, fazendo com que seja consumido muito recurso e poder de processamento.

Já na parte do container, nota-se que os recursos são compartilhados entre os containers, por quem lhe hospeda, ou seja, o container usa o próprio recurso operacional da máquina física, fazendo com que aumente a eficiência no uso, lembrando que os containers são isolados a nível memoria, processamento, disco e rede.

Após esse breve resumo, passaremos para a próxima questão: Por que utilizar o Docker?

Abaixo irei citar alguns pontos que fazem o Docker valer a pena de ser utilizado.

1 - Aplicação como pacote completo

Ao utilizar as imagens Docker é possível empacotar toda sua aplicação e dependências, facilitando assim a distribuição, pois você não precisará enviar uma documentação gigante explicando as configurações de infraestrutura necessárias para a execução da aplicação. Basta disponibilizar a imagem em repositório e liberar o acesso para o usuário e ele poderá baixar o pacote e executá-lo sem problemas.

Além disso, a atualização de sua aplicação também é positivamente afetada com o Docker, pois a estrutura de camadas do Docker faz com que caso haja mudanças, apenas a parte modificada seja transferida fazendo com que o ambiente possa ser alterado de forma rápida, simples e prática. Com apenas um comando o usuário pode atualizar a imagem da aplicação, que será refletida no container apenas no momento desejado.

2 - Semelhança entre os ambientes

Quando sua aplicação é transformada em uma imagem Docker, ela pode ser instanciada como container em qualquer ambiente que você desejar. Isso quer dizer que você poderá utilizar sua aplicação de ontem desejar, do seu notebook pessoal, do notebook da empresa onde você trabalha da mesma forma que seria executada no servidor de produção.

3 - Idioma comum entre desenvolvimento e infraestrutura

O Docker utiliza uma sintaxe muito eficiente para parametrizar as imagens e ambientes Docker, é um idioma comum entre áreas que não tinham um bom diálogo anteriormente.

4 - Comunidade

Assim como é possível acessar o GitHub à procura de exemplos de código, você também pode usar o repositório de imagens Docker para conseguir bons modelos de infraestrutura de aplicações ou de serviços prontos para integrações complexas.

Lembrando que utilizar essas imagens não significa que você sempre precisará usar as configurações que venham na imagem escolhida, você sempre pode enviar sua própria configuração para os ambientes e utilizar as imagens que já estão prontas apenas para evitar o trabalho das instalações básicas.

5 - Padronização e replicação

Como vimos, as imagens Docker são construídas através de arquivos de definição, sendo possível que determinado padrão seja seguido aumentando a confiança na replicação da imagem. Mas para utilizar as imagens da melhor forma possível, precisaremos seguir as melhores práticas de construção de imagens para que seja viável escalarmos nossa estrutura rapidamente.

Instalação do Docker

Atualmente o Docker possui 2 versões: Docker Community Edition e a Docker Enterprise Edition. Nas duas versões teremos acesso a toda a API disponível, a diferença de uma para outra é o perfil desejado de sua aplicação.

Primeiramente instale o Docker através do comando:


Após concluir a instalação do Docker, utilize o comando:


Caso esteja tudo funcionando corretamente, você receberá a seguinte resposta no terminal:


A partir de agora, com o Docker instalado você não possui apenas os serviços como também o utilitário da linha de comando docker.

Vamos explorar como utilizar o comando docker.

Utilizar o docker consiste em passar para ele uma cadeia de comandos e opções sequenciados por argumentos. Teremos a seguinte sintaxe:


Caso queira ver todos os subcomandos disponíveis:


Tendo a seguinte saída:


Caso queira tirar uma dúvida sobre algum comando específico, digite em seu terminal:

Trabalhando com algumas imagens do Docker

Por padrão, o Docker puxa essas imagens do Docker Hub. Qualquer um pode hospedar suas imagens Docker no Docker Hub, sendo assim, a maioria dos aplicativos e distribuições do Linux, você precisará tê-las hospedadas no Docker Hub.

Para verificação se você pode acessar e baixar as imagens do Docker Hub, você precisará digitar:


Você terá o resultado se o Docker está funcionando corretamente:


Caso ainda não exista uma imagem hello-world local, ele irá até o Docker Hub, que é o repositório padrão, e baixará a imagem. Quando baixada a imagem, o Docker cria um container da mesma e executa o aplicativo no container, mostrando a mensagem acima.

Você também poderá fazer buscas utilizando o comando docker seguido do subcomando search, ficando:


Assim teremos o seguinte retorno:


Nas colunas ao lado direito, podemos observar a coluna OFFICIAL, esse OK indica uma imagem construída e suportada pelo projeto, ao localizar a imagem desejada e que você usará no seu projeto, você poderá baixá-la para o seu computador utilizando os subcomando pull.

Ficando da seguinte forma:


Após utilizar o comando acima, você terá a seguinte resposta:


Após o download da imagem escolhida, você poderá executar um container utilizando a imagem baixada com o subcomando run. Como visto no exemplo do hello-world, caso a imagem ainda não tenha sido baixada quando o docker for executado com o subcomando run, o Docker irá primeiro fazer o download da imagem e só depois executar um container utilizando-a.

Para listagem das imagens que foram baixadas no seu computador, digite:


Tendo como resposta a listagem da seguinte forma:


Vamos executar um container Docker para entendermos alguns dos comportamentos, o container hello-world utilizado anteriormente é um exemplo de container que é executado e, após a execução, é finalizado, mas você também pode executar um container utilizando a imagem do Ubuntu.

Ficando assim:


Este comando -i e -t combinados te dá acesso a um shell interativo do container:


Observe o id do container, mais tarde você precisará dele para identificá-lo quando for removê-lo.

Daí em diante você poderá utilizar qualquer comando dentro do container, primeiro atualizaremos o banco de dados do pacote dentro do container:


Note que o sudo não é mais necessário pois você estará operando dentro do container como o usuário root.

Mais um exemplo do que pode ser feito é:


Isso permitirá instalar o Node.js no container do repositório oficial do Ubuntu.


Conclusão

Neste tutorial você entendeu o que é e como utilizar o Docker e trabalhou algumas imagens e containers. Agora que você já entende o básico, em breve traremos novas formas de utilizar o Docker para seus projetos.

Sucesso!

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.