Introdução ao Docker

Para quem não conhece, Docker é uma ferramenta muito flexível e que veio que resolver diversos problemas como, por exemplo, aquela máxima do “na minha maquina funciona”.
Vou fazer uma série de posts sobre esta tecnologia, mas vamos começar pelo básico.

O que é Docker?

A sua aplicação é feita de vários pedaços: Você tem o banco de dados, backend e frontend. Todos eles funcionando na sua máquina e/ou em uma maquina virtual.
Para que ela funcione em outros lugares, você precisa instalar toda uma parafernália em cada um dos ambientes.

Geralmente este processo de instalação toma muito tempo…especialmente quando algo da errado. Para agilizar este processo, existem ferramentas como o Vagrant, que gerencia/automatiza ambientes virtuais. (Mas este é um assunto para outro momento).

O Docker trabalha com containers e imagens, que (na falta de uma analogia melhor) podem ser comparados com caixas onde você organiza toda as partes da sua aplicação e toda a parafernália que ela precisa. Desta forma, quando você precisar que sua aplicação seja executada em outro lugar (ambiente), basta utilizar levar sua caixa. Já está tudo pronto.

 

 

Qual a diferença entre o Docker e uma Maquina Virtual (tipo o VirtualBox)?

Bom, a primeira diferença é que não existe uma provisão de recursos com o Docker, ou seja, você não define que a sua caixa (imagem) precisa de 12gb de RAM e 415 cpus.

Ela é construída com o mínimo necessário para que ela seja executada corretamente. Os recursos que ela utiliza são os da maquina onde o Docker está instalado.
Para deixar as coisas um pouco mais claras, um exemplo:

Você pode possuir três maquinas virtuais: 1 de Testes, 1 de Homologação e 1 de Produção. Todas diferentes entre sí (quantidade de memória, cpus, etc), mas todas com o Docker instalado.

Você pode desenvolver sua aplicação localmente (no seu computador) usando uma imagem do docker e simplesmente copia-la para as três VMs e executa-las. Não precisa ficar instalando dependências, preocupando com versionamentos disso ou daquilo e o melhor: Se algo de errado, basta remover a imagem que está sendo utilizada e começar de novo com a imagem que você possui.

Outra grande vantagem é a escalabilidade do processo. Você pode subir vários containers (cada container é um ‘ambiente’ isolado que utiliza uma imagem) até que os recursos da maquina estejam esgotados.

Em termos arquitetônicos, ele funciona da seguinte forma: Você tem o servidor -> sistema operacional -> Docker (engine) -> múltiplas imagens do Docker sendo executadas em paralelo.

Muito bom, certo? Certo!
Ele veio para resolver todos os problemas? Provavelmente não, mas já ajuda!

 

 

Como instalar?

Para instalar em um Mac ou Windows, você vai precisar acessar a loja do Docker e fazer o download. É necessário fazer login, mas não tem problema, é grátis.

 

Para ambos casos, o processo de instalação é bem padrão: Basta baixar o instalador, executar, seguir as instruções, aguardar terminar e pronto.

Alô você que gosta/usa VirtualBox! O Docker funciona com Hyper-V.  Salvo engano, tem como fazer ele funcionar com o VirtualBox, mas não é o modo mainstream de execução.

 

Linux (Ubuntu)

Documentação: https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1

Para instalar a versão mais recente do Docker:

sudo apt-get update
sudo apt-get install docker-ce

 

Extra!

Utilizando Docker no browser! Sim, existe uma ferramenta gratis que te permite utilizar esta ferramenta, rodar vários containers ao mesmo tempo, como se todos estivessem na sua rede.

Limitações:

  1. Sua sessão dura apenas 4 horas. Você pode criar outras sessões, mas depois de 4h, tudo que você fez será perdido;
  2. Cada sessão pode conter até 5 instancias / containers simultâneos.

Bem bacana. Confira: https://labs.play-with-docker.com/

 

No próximo post, vou falar dos comandos básicos do Docker!

Espero ter ajudado!

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Conhecimento Técnico, Dev, Docker and tagged , .