Servidores para quem tem preguiça — Docker
Nem todo mundo gosta de criar e configurar servidores para testar novas tecnologias. O Docker veio para resolver o problema dos “preguiçosos”, que querem utilizar aquele banco de dados novo, ou quer testar aquele serviço que lançaram, mas na hora que vai ver o tanto de coisa que tem que configurar, abandona tudo, “joga a toalha”.
Utiliza-lo para criar servidores para estudos é legal, mas não é a principal função. Docker é uma ótima ferramenta para padronizar ambientes de desenvolvimento e produção, e automatização dos processos de build.
O Docker basicamente é uma máquina virtual evoluída(Claro que não é só isso), ele utiliza o seu sistema operacional para criar o servidor, mas continua sendo isolado do seu sistema operacional, ao contrário de uma vm que virtualiza o sistema operacional, gerando mais gasto de memória e processamento para seu computador.
Nós já sabemos o que é o tal de Docker, a ferramenta que gerencia os containers, mas o que eles são? Container representa cada um dos serviços que está rodando, a imagem a cima representa eles como App A e por aí vai. Cada um deles roda um serviço, e um não interfere no outro, você pode ter dois bancos do PostgreSQL rodando e um nem saber que o outro existe.
Além de criar os seus containers para distribuir, ou para poder apagar e recriar quando quiser, existem os chamados Docker registry, que oferecem imagens prontas para executar, o mais famoso deles é o Docker Hub. Entra lá e da uma olhada na quantidade de imagens que você pode utilizar e colocar o seu serviço no ar em poucos segundo!
Bom já chega de teoria, e vamos passar para a prática! Vamos colocar nosso primeiro container no ar!
Antes de tudo temos que instalar o docker, ele roda nos três principais sistemas operacionais do mercado: Windows , Linux e Mac
Para facilitar vamos usar a linha de comando, no Linux e no Mac você pode usar o Terminal e no Windows o powerShell. Para testar se a instalação está correta e o serviço do docker esta rodando abra o seu terminal digite: docker. A saída deve ser parecida com a imagem abaixo.
Containers na prática
A ideia é colocar no ar um servidor de postgreSQL, e vocês verão o quão fácil e rápido é esse procedimento. Vou pegar a imagem do servidor lá no Docker Hub, é só entrar no site e buscar por PostgreSQL. Escolhi a imagem oficial.
Docker pull
Vamos dar nossos primeiros comandos, não se preocupe em gravar nada, apenas entender o funcionamento! O primeiroDocker para quem tem preguiça deles vai ser o docker pull**,**comando que faz o download da imagem do registry para a seu computador, no caso do Postgre, o Docker Hub informa que o comando é:
docker pull postgres
Essa é a parte mais demorada, ele irá baixar todos os arquivos necessários, mas isso é executado uma vez quando vai baixar a imagem, na hora de executar o container não temos todo esse processo.
Docker images
Para verificar todas as imagens que você baixou para seu computador, você tem que executar o comando
docker images
Docker run
Se a imagem já está na sua máquina, agora é só colocar o serviço no ar! Para isso o comando utilizado é o docker run, esse é o comando mais complexo que vamos aprender, mas também não é coisa de outro mundo. Ele cria o seu container, e a dificuldade que existe são os parâmetros de criação, mas se você for no site do Docker Hub lá tem toda uma documentação desses parâmetros para você criar do modo que deseja.
docker run --name nomeDoContainer -e POSTGRES_PASSWORD=suaSenhaAqui -d postgres
Agora vamos por partes entender esse comando:
–name serve para setar o nome do container, que não deve conter espaços.
-e utilizado para passagem de variáveis de ambiente, que nesse caso vamos passar um valor para a variável de senha do Postgre, setando a variável de ambiente POSTGRES_PASSWORD.
-d faz o container rodar em background, ele vai iniciar o container, te retornar o id, e ele vai continuar rodando. Depois faça alguns testes, se você rodar sem esse parâmetro o container vai ficar rodando enquanto você tiver com o terminal aberto, quando fechar o container é desligado.
Por último, o nome da imagem que nesse caso é postgres.
E pronto seu servidor está no ar, passando os parâmetros dessa forma toda vez que o serviço do Docker é iniciado, o seu container inicia junto.
Docker ps
Para ter certeza se seu servidor está no ar, vamos usar o comando para listar todos os containers em funcionamento, docker ps, se utilizarmos o parâmetro -a, iremos listar todos nossos container ligados ou desligados.
docker ps
docker ps -a
obs: criei um contaier de teste e desliguei, só para mostrar o comando com o parâmetro -a.
Acessando o servidor
E pronto você já pode acessar o seu servidor, usando o usuário padrão do banco, nesse caso postgres e a senha que você passou pro parâmetro, suaSenhaAqui. Ta, mas qual o ip que o meu container ficou? Para saber o ip do servidor você pode rodar esse comando, que irá mostrar o ip ao lado do nome de cada container, nome que você deve passar na hora da criação do container com o parâmetro –name.
docker inspect -f ‘{{.Name}} — {{.NetworkSettings.IPAddress }}’ $(docker ps -aq)
Controle dos containers
Depois de criado, você pode parar, executar e excluir seus containers quando quiser com três comandos.
docker stop
O comando docker stop para temporariamente o seu container, e ele recebe como parâmetro o nome do container.
docker stop nomeDoSeuContainer
docker start
Ele volta a executar o container que você parou, e ele também recebe por parâmetro o nome do container, que você pode encontrar dando o comando docker ps -a
docker start nomeDoSeuContainer
docker rm
para aplicar esse comando você precisa dar um stop no container antes, e uma vez feito não tem mais volta.
docker rm nomeDoSeuContainer
Quero aprender mais e agora?
É claro que com esses conhecimentos adquiridos você não vai sair colocando docker em produção, mas já é um início para você que não gosta de fazer trabalho repetitivo. Se você quer aprender mais sobre, indico três fontes, a documentação do docker, o excelente material feito pelo Linux Tips, que é onde estou aprendendo sobre o assunto, da uma olhada no canal dele! Por último, um vídeo sobre os primeiros passos, lá do pessoal da pagar.me.
Trouxe um pouco do que estou estudando do Docker, se você precisar de ajuda para dar os primeiros passos, pode entrar em contato por email: contato@cristianoprogramador.com
Muito obrigado!