Docker - Infraestrutura simples e rápida

Docker é uma plataforma aberta para desenvolvedores e administradores de sistemas, usada para construir, executar e distribuir "máquinas". Nesse artigo vou explicar o que é isso e as suas funcionalidades mais básicas.

[ Hits: 64.236 ]

Por: Rafael Brito Gomes em 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:
    Próxima página

Páginas do artigo
   1. O que é Docker
   2. Utilizando o Docker
Outros artigos deste autor

Criando imagens Docker com Dockerfile

Monitorando automaticamente o Docker com Zabbix

Leitura recomendada

Criando aplicação MVC utilizando DOTNET Core no GNU/Linux

Ubuntu Control Center

Paravirtualização com o Xen

Servidor Jabber com LDAP

Manipulação de arquivos PDF no Linux

  
Comentários
[1] Comentário enviado por removido em 01/04/2015 - 16:19h

Muito legal o artigo, obrigado por postar aqui.

Eu estou aguardando um tempinho "livre" para fazer mais testes, para algumas situações pode substituir as VM's com boas vantagens.

* Vi que ja postou mais no seu blog http://techfree.com.br/category/docker/ (Pode por referencia a ele nos seus artigos e na sua assinatura/Perfil caso queira).


[2] Comentário enviado por gomex em 01/04/2015 - 16:56h


[1] Comentário enviado por erisrjr em 01/04/2015 - 16:19h

Muito legal o artigo, obrigado por postar aqui.

Eu estou aguardando um tempinho "livre" para fazer mais testes, para algumas situações pode substituir as VM's com boas vantagens.

* Vi que ja postou mais no seu blog http://techfree.com.br/category/docker/ (Pode por referencia a ele nos seus artigos e na sua assinatura/Perfil caso queira).



Obrigado! Eu consigo editar esse artigo aqui do VoL?

[3] Comentário enviado por removido em 01/04/2015 - 17:33h

Depois de Publicado acredito que não (Talvez a moderação consiga). Falei mais para os próximos que publicar e para quem ler os comentários possa ter ainda mais informação(Gostei bastante desta tecnologia. O pessoal do FreeBSD esta desenvolvendo algo semelhante, porem ainda é mais diferencial a favor do Linux).





[4] Comentário enviado por nicolo em 08/04/2015 - 11:42h


"tecnologias LXC, Aufs e Btrfs. "
Eu estou ficando velho mesmo. Buááa´.

[5] Comentário enviado por hrcerq em 11/04/2015 - 20:30h

Gostei do artigo. Simples e claro, e me ajudou a entender melhor o que é o Docker. Embora seja pouco provável que eu tenha que trabalhar diretamente com essa ferramenta, eu sei que o Docker está ganhando muito destaque e cedo ou tarde esses conhecimentos farão diferença.

Obrigado por trazer esses esclarecimentos.

---

Atenciosamente,
Hugo Cerqueira

[6] Comentário enviado por Tacioandrade em 15/04/2015 - 00:31h


Uma duvida simples sobre o Docker, no caso eu vi que o comando para iniciar um "container" passa como parâmetro a porta do host que o "guest" irá receber para prover o serviço.

# docker run -d -p 80:80 nginx

Porem caso eu queira subir no mesmo host 10 servidores web nginx por exemplo existe alguma forma, mesmo sendo colocar múltiplos IPs no host? Nesse ponto acho que o uso do LXC ou OpenVZ + alguma solução de orquestração, possa ser uma solução melhor do que o docker,

PS: No caso só estou prospectando pois não conheço a fundo a aplicação, essa é a segunda vez que ouço falar da mesma.

[7] Comentário enviado por gomex em 15/04/2015 - 09:00h


[6] Comentário enviado por Tacioandrade em 15/04/2015 - 00:31h


Uma duvida simples sobre o Docker, no caso eu vi que o comando para iniciar um "container" passa como parâmetro a porta do host que o "guest" irá receber para prover o serviço.

# docker run -d -p 80:80 nginx

Porem caso eu queira subir no mesmo host 10 servidores web nginx por exemplo existe alguma forma, mesmo sendo colocar múltiplos IPs no host? Nesse ponto acho que o uso do LXC ou OpenVZ + alguma solução de orquestração, possa ser uma solução melhor do que o docker,

PS: No caso só estou prospectando pois não conheço a fundo a aplicação, essa é a segunda vez que ouço falar da mesma.


De acordo com a documentação dele de networking.[1], é possível usar sim IPs distintos no host para expor a mesma porta em vários containers. "-p IP:host_port:container_port"

Para usar múltiplos containers, aconselho a utilizar o docker-compose, que é algo que farei um texto em pouco por aqui.

[8] Comentário enviado por Tacioandrade em 15/04/2015 - 13:37h


[7] Comentário enviado por gomex em 15/04/2015 - 09:00h

De acordo com a documentação dele de networking.[1], é possível usar sim IPs distintos no host para expor a mesma porta em vários containers. "-p IP:host_port:container_port"

Para usar múltiplos containers, aconselho a utilizar o docker-compose, que é algo que farei um texto em pouco por aqui.


Show agora se parece mais atrativa ainda a solução. =) Futuramente vou dar uma olhada com maior cuidado nela e realizar testes de laboratório. =)

Esperando os seus outros artigos futuramente por aqui também.

Att. Tácio Andrade.

[9] Comentário enviado por lucasvasconcelos em 16/09/2015 - 10:36h

Ótimo artigo, sem duvida Docker é o futuro, uma tecnologia como essa é incrível, adms de redes com certeza devem dominar essa ferramenta o mais rápido possível pois essa sim.... é uma verdadeira mão na roda.

parabéns pelo artigo, estou esperando por mais

[10] Comentário enviado por rjdiniz em 07/01/2016 - 08:43h

Rafael blz? fui tentar colocar o Docker para rodar a instalação foi blz não apresentou erro porem na segunda parte "Utilizando o Docker":

# docker pull nginx
FATA[0000] Post http:///var/run/docker.sock/v1.18/images/create?fromImage=nginx%3Alatest: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

Pode me dar uma força?
Raul Júnior

[11] Comentário enviado por jotagera em 04/02/2016 - 10:03h

Olá. Bom dia.
Gostaria de saber se o container Docker permite limitação de recursos, tal como memória ou processador?
Obrigado.

[12] Comentário enviado por duker em 27/05/2016 - 23:04h

Parabéns!! Estou iniciando no docker e seu artigo é um ótimo primeiro passo!


[13] Comentário enviado por Lisandro em 28/06/2016 - 10:56h

Muito legal. Vou ler todos os artigos.
Abraço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts