Introdução ao Docker
MeetUp Open Talks
RJ - 03/2015
O que é o Docker
Uma abstração opensource que automatiza
a implementação de qualquer aplicação de
forma leve e portátil em containers auto-
suficientes, onde poderão ser executados
nos mais diversos ambientes.
Motivação
Nós queremos entregar nosso software funcional para
diferentes ambientes de forma simples.
Principais Problemas
● Mover do ambiente de desenvolvimento para produção é difícil
○ Bibliotecas conflitantes / Diferentes versões
○ Diferentes sistemas operacionais
○ Diferentes versões de banco de dados
● Criar, atualizar e manter toda a software stack é difícil
○ O projeto usualmente contém muitas libs, bancos de dados, serviços…
○ Difícil de manter uma versão do projeto reproduzível
● Teste / Integração Contínua / Entrega Contínua é difîcil de automatizar
Como resolver isso (DIY)
Faça você mesmo (Do-It-Yourself)
1. Copiar / Instalar depedencias (manualmente)
2. Preparar os banco de dados
3. Instalar a última versão do projeto
4. Configurar as propriedades
5. Testar o projeto em execução
6. Epaa! Alguma coisa esta faltando, não esta funcionando!
7. Consertar os erros
8. Repetir os testes da aplicação novamente até estar funcionando
9. Escrever manuais para ajudar outras pessoas a configurar o (monstrinho).
Como resolver isso (VMs)
Empacotar tudo em uma VM e execute o deploy em
diferentes ambientes
Desvantages das VMs
● Pesada. Quantas VMs você pode rodar em sua maquina?
● Consumo alto de recursos. Virtualização completa OS, I/O, etc…
● Tamanho. Usualmente precisa de muitos GBs para cada VM
● Problemas de portabilidade. Diferentes soluções de virtualização.
● Gerenciamento. Difícil de manter / configurar / reusar diferentes versões de
cada VM.
● Problemas de gerenciamento podem ser resolvidos com Vagrant, Chef,
Puppet…
Como resolver isso (Docker)
Empacotar tudo em containers LXC
Virtual Machines
Cada aplicação virtualizada não inclui somente a aplicação - onde pode
ser somente 10MB de arquivo - e as libs e binários necessários, mas
também todo um sistema operacional - onde pode ter mais de 10 GB.
Docker vs Virtual Machines
Docker
A Docker Engine Container compreende apenas a aplicação e suas
dependencias. Ela roda em um processo isolado em um userspace no
sistema operacional hospedeiro, compartilhando o kernel com os outros
containers. Dessa forma é possível ter o isolamento e alocamento de
recurso que uma vm proporciona porém mais portatíl e eficiente.
O Ecosistema do Docker
Obrigado
By
Hugo Leonardo Costa e Silva
WebDeveloper at Holis
@hugoleodev

Introdução ao docker

  • 1.
    Introdução ao Docker MeetUpOpen Talks RJ - 03/2015
  • 2.
    O que éo Docker Uma abstração opensource que automatiza a implementação de qualquer aplicação de forma leve e portátil em containers auto- suficientes, onde poderão ser executados nos mais diversos ambientes.
  • 3.
    Motivação Nós queremos entregarnosso software funcional para diferentes ambientes de forma simples.
  • 4.
    Principais Problemas ● Moverdo ambiente de desenvolvimento para produção é difícil ○ Bibliotecas conflitantes / Diferentes versões ○ Diferentes sistemas operacionais ○ Diferentes versões de banco de dados ● Criar, atualizar e manter toda a software stack é difícil ○ O projeto usualmente contém muitas libs, bancos de dados, serviços… ○ Difícil de manter uma versão do projeto reproduzível ● Teste / Integração Contínua / Entrega Contínua é difîcil de automatizar
  • 5.
    Como resolver isso(DIY) Faça você mesmo (Do-It-Yourself) 1. Copiar / Instalar depedencias (manualmente) 2. Preparar os banco de dados 3. Instalar a última versão do projeto 4. Configurar as propriedades 5. Testar o projeto em execução 6. Epaa! Alguma coisa esta faltando, não esta funcionando! 7. Consertar os erros 8. Repetir os testes da aplicação novamente até estar funcionando 9. Escrever manuais para ajudar outras pessoas a configurar o (monstrinho).
  • 6.
    Como resolver isso(VMs) Empacotar tudo em uma VM e execute o deploy em diferentes ambientes
  • 7.
    Desvantages das VMs ●Pesada. Quantas VMs você pode rodar em sua maquina? ● Consumo alto de recursos. Virtualização completa OS, I/O, etc… ● Tamanho. Usualmente precisa de muitos GBs para cada VM ● Problemas de portabilidade. Diferentes soluções de virtualização. ● Gerenciamento. Difícil de manter / configurar / reusar diferentes versões de cada VM. ● Problemas de gerenciamento podem ser resolvidos com Vagrant, Chef, Puppet…
  • 8.
    Como resolver isso(Docker) Empacotar tudo em containers LXC
  • 9.
    Virtual Machines Cada aplicaçãovirtualizada não inclui somente a aplicação - onde pode ser somente 10MB de arquivo - e as libs e binários necessários, mas também todo um sistema operacional - onde pode ter mais de 10 GB. Docker vs Virtual Machines Docker A Docker Engine Container compreende apenas a aplicação e suas dependencias. Ela roda em um processo isolado em um userspace no sistema operacional hospedeiro, compartilhando o kernel com os outros containers. Dessa forma é possível ter o isolamento e alocamento de recurso que uma vm proporciona porém mais portatíl e eficiente.
  • 10.
  • 11.
    Obrigado By Hugo Leonardo Costae Silva WebDeveloper at Holis @hugoleodev