Docker, infraestrutura simples e rápida

Standard

O que é Docker

Uma plataforma aberta para desenvolvedores e administradores de sistemas, usada para construir, executar e distribuir “máquinas”.

“Máquina” será sempre usada entre parentese, pois esse termo será usado apenas para facilitar o entendimento. Ele não é correto, uma vez que máquina mesmo é somente o host onde o docker é executado, ou seja, tudo roda de forma isolada na mesma máquina.

Tudo isso é possível por conta da Docker Engine, que é um forma de empacotamento de infraestrutura, que é portável e simples, na qual constitui facilmente várias “máquinas” executando no mesmo kernel, porem isoladas logicamente, usando as tecnologias LXC, AUFS e BTRFS.

Parece Virtualização, mas não é :)

Parece Virtualização, mas não é 🙂

Continuando sobre o conceito da plataforma Docker, eles disponibilizam também um serviço de nuvem para armazenar e compartilhar imagens prontas, criadas tanto pela comunidade responsável pelo Docker, como por qualquer outra pessoa interessada, e o melhor, sem custo!

Cada pessoa registrada no serviço tem a possibilidade de criar um número ilimitado de imagens públicas (todos podem ver e baixar) e apenas uma imagem privada na conta gratuita.

Imagens e Containers

Uma máquina docker pode ser composta de várias camadas. E essas camadas se dividem em dois tipos; Imagens e Containers.

  • Imagens: Uma vez as “máquinas” em execução essas camadas são montadas como somente leitura. Elas podem ser compartilhadas por várias “máquinas”, ou seja, uma vez modificadas afetam todas as “máquinas” que usam essas imagens.
  • Containers: Essas camadas são montadas como leitura e escrita. É onde de fato estão as modificações da “máquina” em execução. Toda modificação realizada em uma imagem é feita a partir de um container.
Imagens e containers, perfeita sinergia.

Imagens e containers, perfeita sinergia.

Instalando o Docker

Se você usar Debian Jessie ou superior, não terá problemas. Basta executar o comando abaixo:
# aptitude install docker.io

Caso não utilize GNU/Linux, pode usar o boot2docker.

Conhecendo alguns comandos básicos

Infelizmente o docker ainda não tem uma interface web ou gráfica desktop suportada de forma estável pela sua comunidade oficial, sendo assim falaremos aqui apenas de comandos no shell.

Seguem abaixo os comandos mais básicos do docker:

docker pull [nome da imagem]
: Baixar imagem
docker images : Listar imagens
docker run [nome da imagem] : Iniciar a imagem
docker ps  : Listar containers
docker exec [id do container] [comando] : Executa comandos no container

Mais comandos podem ser encontrados nesse link.

Instalando uma “máquina” e executando em 2 minutos

Dois comandos, e o tempo gasto será apenas de download:

# docker pull nginx
# docker run -d -p 80:80 nginx

Pronto! Sua “máquina” estará funcionando.

O parâmetro -d informa que a “máquina” será executada em background e o parâmetro -p informa que toda requisição da porta 80 do hospedeiro X será redirecionada para a porta 80 da “máquina” que acabou de ser iniciada.

Sem persistência

Lembrando que as mudanças são apenas aplicadas no container, toda vez que desligar a “máquina”, na verdade você estará desmontando essa camada, e ao iniciar a “máquina” a partir de uma imagem será criado um novo container, ou seja, terás uma “máquina” “novinha em folha”.

Para desligar um container em execução, use o comando abaixo:

# docker stop <id do container>

Lembre-se que para obter o id do container, é necessário executar o comando abaixo:

# docker ps

É possível reiniciar um container que foi “desligado”. Para isso usa-se o comando abaixo:

# docker start <id do container>

Obs: Lembrando que todos os dados de memória RAM serão perdidos, apenas os dados em disco serão armazenados e reutilizados na próxima execução.

Acesso ao shell da “máquina”

Após a “máquina” está em execução, é possível acessar o shell da “máquina” e executar procedimentos localmente. Para isso usa-se o comando abaixo:

docker exec -it <id do container> bash

O parâmetro -i informa que esse comando será executado no modo interativo, e o parâmetro -t informa que deverá ser alocado um pseudo-TTY, por fim o comando bash será executado na “máquina” e lhe dará acesso a  seu shell.

Por hoje é só. Aguardem novos artigos sobre Docker, pois falaremos sobre modificação de imagens, mapeamento de disco, criação de “máquinas” “do zero” e outras coisas interessantes sobre esse assunto.

Referência : https://docs.docker.com/reference/

  • Show! Escreve logo os próximos aí 🙂

    • Gomex

      Já tenho alguns em produção! Logo logo teremos mais 🙂