Docker: Primeiro contato com os Containers

Photo by Ian Taylor on Unsplash

Docker: Primeiro contato com os Containers

Aprendendo um pouco mais sobre a "nova" maneira de virtualização

O que é Docker?

O docker é uma ferramenta para o uso e a criação de containers open-source escrita em Go, criada pela empresa dotCloud em seu inicio, depois o nome da empresa se tornou Docker Inc. devido ao seu sucesso.

A ferramenta foi desenvolvida tendo em mente o LXC (Linux Containers), que eram os containers usados na época mas eles tinham poucos recursos e a ferramenta não era robusta e não tinha uma boa experiência no geral.

Ok, mas o que é um container?

Em resumo, um container seria como um ambiente isolado e encapsulado para executar as aplicações no geral, ou seja, ele vai ter um sistema operacional específico, um servidor http específico, configurações de recurso para cada ambiente (RAM, Memória, CPU...) e por aí vai.

Então temos a possibilidade de encapsular um ambiente de produção por exemplo com as dependências dele sem precisar de todo aquele processo de instalação dos servidores, criando um servidor físico para cada sistema desejado.

Por que usar Docker e Containers?

Umas das vantagens de usar containers é a divisão do software em módulos, neste caso, se você tem uma aplicação dividida em relatórios, interface e perfis por exemplo, se criarmos um container para cada módulo e desativar os relatórios, não necessariamente o container dos perfis vai ser afetado, ou seja, você pode definir essa responsabilidade para cada virtualização, mantendo assim seus módulos independentes de uma certa forma.

Com o docker, temos a opção do controle de versão do container, se por algum motivo a aplicação teve alguma alteração como atualização de dependências, aumento da memória RAM, adição de armazenamento e entre outros, podem ser adicionadas a imagem e atualizar a versão do container.

Como uma das suas “features”, o Docker conta com um repositório de imagens que é o docker hub, que facilita a utilização do docker com relação a criação, reutilização e controle de versão das imagens, alem de poder baixar uma “ISO” ou imagem já pré-configurada, evitando assim, “Retrabalho”.


Instalação do docker

No meu caso, estou usando o Manjaro, então os passos a seguir serão para distribuições baseadas em arch linux, caso você não esteja utilizando a mesma distribuição que eu, você pode seguir os links abaixo que mostram as diversas instalações do docker em grande parte das distribuições:

Como instalar o Docker no Ubuntu 20.04 e derivados

Docker no Fedora 35

Como Instalar e Usar o Docker no CentOS 7 | DigitalOcean

Vou deixar também o link para a documentação oficial do docker para instalação, caso seja necessário:

Docker Documentation

Instalando o Docker no Manjaro:

Inicialmente para garantir que seu sistema esteja atualizado, execute o seguinte comando em seu terminal:

sudo pacman -Syyu

Para instalar a partir dos repositórios oficiais:

sudo pacman -S docker

Habilite o serviço do docker:

systemctl start docker

Obs: Caso queira usar o docker sem precisar de “sudo” basta adicionar a permissão para o seu usuário com o seguinte comando:

sudo usermod -aG docker $USER

Faça logoff ou reinicie o seu computador, após isso, execute o comando docker no terminal e a saída provavelmente será:

Screenshot_from_2022-04-16_18-00-44.png


Criando o primeiro container

Após a instalação, vamos criar o primeiro container executando o seguinte comando no terminal:

docker run hello-world

Se tudo ocorrer bem, você terá uma saída como essa:

Screenshot_from_2022-04-16_19-37-05.png

Notando a mensagem: “To try something more ambitious, you can run an Ubuntu container with...”, está nos dizendo, resumidamente para testar algo mais ambicioso como rodar um container ubuntu usando o bash, então vamos “ouvi-lo”:

Execute em seu terminal o seguinte comando:

docker run -it ubuntu bash

Executando este comando você irá notar que um download será iniciado para pegar a imagem do sistema operacional ubuntu, pois ele não existe em sua máquina, isso se você não tenha utilizado o docker antes, é claro, após esse download, devido ao -i, ele irá começar um modo de interatividade e o -t para ter esse modo de interatividade no terminal bash do ubuntu.

Após isso você já estará acessando o container pelo terminal, para saber a distribuição do sistema execute:

cat /etc/issue

Provavelmente irá retornar a seguinte saída:

Screenshot_from_2022-04-16_19-50-18.png

Para sair do container basta digitar “exit” ou Ctrl + D, se quiser sair e manter o docker em execução é só apertar Ctrl + P + Q.

Lembrando que você pode ver os containers em execução usando o docker ps.


Principais Comandos no Dia a Dia

Depois de ter feito a configuração inicial do docker, separei alguns dos principais comandos usados no dia a dia, como:

docker ps = Mostra os containers em execução

docker ps -a = Mostra todos os containers

docker images = Mostra Todas as imagens ou ISOs instaladas

docker rmi = Para excluir a imagem desejada

docker run - Para começar a rodar um docker

docker run -it = Para começar o docker com interatividade no terminal

docker run -d = Para começar o docker em background (Processo)

docker run -it -p = Para expor a porta do container para o host e iniciar no modo interativo no terminal

docker start = Para iniciar a instância do docker

docker stop = Para parar a instância do docker

docker pause = Para pausar a instância do docker

docker unpause = Para retomar a instância do docker

docker rm = Para remover o container docker (Se ele não estiver em execução)

docker rm -f = Para remover o container docker (Force)

docker stats = Para trazer as informações sobre o docker

docker top = Para saber os processos sobre o docker

docker logs = Para saber os logs sobre o docker

docker diff = Para saber o histórico dos arquivos criados, modificados e deletados

docker attach = Para voltar ao container em execução

docker create = Para somente criar o container, não executa-lo

docker commit = Para criar uma imagem a partir das mudanças do container, fazendo o controle de versão a partir das alterações


Considerações Finais

O docker é extremamente util quando se trata de criação e simulação de um ambiente para colocar o seu código em produção, com as dependências necessárias e o “Hardware” necessário para a aplicação, sabemos que o docker é usado principalmente na infraestrutura, mas é uma ferramenta interessante para um desenvolvedor ter domínio sobre para onde o código dele vai.

Bom, por hoje é só pessoal, bons estudos!!