Docker - Infraestrutura simples e rápida

Docker - Infraestrutura simples e rápida

Autor: Rafael Brito Gomes <gomex at riseup.net>
Data: 01/04/2015

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 aspas, 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.
Parece Virtualização, mas não é :)
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, porém isoladas logicamente, usando as tecnologias LXC, Aufs e Btrfs.

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.

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.

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:

Utilizando o Docker



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" estar 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 ao 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.




Comentários