O documento discute como o Docker pode ser usado para orquestrar containers, máquinas e aplicações distribuídas de forma modular, portátil e dinâmica através das ferramentas Docker Engine, Docker Machine, Docker Swarm e Docker Compose. O palestrante explica como essas ferramentas facilitam a construção, distribuição e execução de aplicações de forma consistente em qualquer ambiente.
2. Informações Pessoais
• Roberto Gandolfo Hashioka
• @rogaha (Github) e @rhashioka (Twitter)!
• No Docker em Maio 2013 (Dotcloud)!
• Finanças -> Software Engineer!
• Projeto Atual: Docker Hub/Metrics!
3. Objetivo da Apresentação
• Explicar o que é o Docker e como usá-lo
• Explicar o paradigma entre dev e ops!
• Explicar como rodar aplicações distribuidas em qualquer ambiente!
• Compartilhar experiências (Silicon Valley)!
4. Informações dos Projetos
• Projetos no Github
• Docker – (github.com/docker/docker)!
• Docker Machine – (github.com/docker/machine)!
• Docker Swarm – (github.com/docker/swarm)!
• Docker Compose – (github.com/docker/compose)!
Aplicações distribuidas com Docker são modularizadas, portáveis e dinâmicas
5. O que é o Docker Engine?
• Ferramenta que facilita a construção, distribuição e execução de qualquer a
plicação em qualquer ambiente (VM, nuvem, servidor fisico, laptop)
• Sua aplicação roda de forma isolada com seus próprios processos, IP e file
system, independente do host. Ou seja, dentro de um container
• Construção: empacota sua aplicação numa imagem (docker build)!
• Distribuição: Move a imagem entre diferentes maquinas (docker push/pull)!
• Execução: Execute sua aplicação (docker run)!
6. Contrução: docker build – Dockerfile
• Receita para criar uma imagem (container)
• Começa de uma base: FROM ubuntu:14.04, fedora:20, debian:jessie!
• Rode comandos: RUN apt-get install –y firefox ssh !
• Copie seus dados: ADD /app/code /code/!
• Crie scripts de inicialização ou execute arquivos binários: CMD start_firefox
.sh, /usr/sbin/sshd –D!
7. Exemplo de Dockerfile
-----------------------------------------------------------------------------------------------------------!
FROM ubuntu:14.04!
MAINTAINER Roberto Hashioka (roberto@docker.com)!
RUN apt-get update && apt-get install -y nginx!
RUN echo ’Hello Developers from Sao Paulo' > /usr/share/nginx/html/index.html!
EXPOSE 80!
------------------------------------------------------------------------------------------------------------!
$ docker build –t rogaha/web .!
$ docker run –d –p 80:80 –-name container_web_demo_sp rogaha/web!
8. Distribuição: docker pull / push
• Transfere sua aplicação dockerzizada de um servidor para outro
• Registry Hub: Repositório central de imagens criadas pela comunidade!
• O objetivo principal do Registry Hub é facilitar a criação de aplicações !
• Milhares de images foram criadas e são mantidas pela comunidade. Por
exemplo: nginx, ubuntu, postgres, redis, node, centos, wordpress, java (htt
ps://registry.hub.docker.com/repos/library/)!
9. Execução: docker run
• Roda as aplicações de forma consistente e confiável
• Elimina os problemas de diferenças entre versionamento das dependências!
• Os containers rodam de forma isolada. Você pode rodar aplicações em De
bian, Ubuntu, CentOS na mesmo servidor/laptop!
• Se funciona no seu laptop, irá funcionar no servidor!
• RESOLVE grande parte dos problemas entre DEV e OPS!
10. Estatíticas da comunidade Docker
• > 950 Contribuidores no Github
• > 80.000 Projetos dockerized no Github
• > 140.000 Repositórios no Docker Hub!
• > 48.000 membros no Meetup.com, > 150 cidades, > 50 países!
• > 400.000.000 images do docker baixadas (docker pull)!
11. Docker Machine: Zero to Docker em minutos
Antes
• Várias etapas de setup!
• Conecta a apenas um host!
• Instalação e configuração
para aquele host específico!
Depois
• Um comando de setup!
• Provisiona o Docker Engine
em qualquer host!
• Integrações para criar hosts
com o docker nas nuvens !
14. Docker Swarm: Otimize recursos, Tolerância a falhas
e alta disponibilidade
Antes
• Sem solução nativa!
• Cada Docker Engine é
independente entre si!
!
Depois
• Cluster de Docker Engines
como se fosse um só!
• Interface única de dev.!
• Swarm dimensiona seu app!
• Agendamento nativa das app!
• Integração com outros
agendadores !
18. Docker Compose: Simplifica Aplicações multi-
container
Antes
• Simples aplicações individuais
em containers!
• Sem solução nativa para
aplicações multi-containers!
• Ineficiente: Precisa repetir
commandos para cada
container!
!
Depois
• Único arquivo .yml que define
sua aplicação inteira!
• Rode sua aplicação completa
com um único comando!
• Atualize facilmente sua
aplicação com o arquivo .yml!
!