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
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:
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á:
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:
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:
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!!