Orquestrando Docker
Containers
Machine, Swarm e Compose
Roberto G. Hashioka - @rhashioka – 2015-06-10 – São Paulo/SP!
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!
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)!
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
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)!
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!
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!
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/)!
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!
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)!
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 !
Docker Machine
Docker Machine
$ machine create
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 !
Docker Swarm
$ docker run swarm
Docker Swarm
$ docker run
Docker Swarm
$ docker run
Batteries included
but swappable
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!
!
Docker Compose
containers:
web:
build: .
command: python app.py
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
environment:
- PYTHONUNBUFFERED=1
redis:
image: redis:latest
command: redis-server --appendonly yes
Docker Compose
$ docker-compose
Docker Compose
$ docker-compose
A Docker Distributed Application
$ dockerHappy
Devs
Ops
Flexibility
Web x8 Cache x2Database x2
Ecosistema de Gestão de Containers
Infrastructure
Clustering and Scheduling
Service Discovery
Docker Hub
Promo code: docker-sp-meetup
https://registry.hub.docker.com/plans/micro
@rhashioka
Obrigado!
Perguntas?
@rhashioka

Orquestrando Docker Containers: Machine, Swarm e Compose

  • 1.
    Orquestrando Docker Containers Machine, Swarme Compose Roberto G. Hashioka - @rhashioka – 2015-06-10 – São Paulo/SP!
  • 2.
    Informações Pessoais •  RobertoGandolfo 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 -----------------------------------------------------------------------------------------------------------! FROMubuntu: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 comunidadeDocker •  > 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: Zeroto 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 !
  • 12.
  • 13.
  • 14.
    Docker Swarm: Otimizerecursos, 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 !
  • 15.
  • 16.
  • 17.
    Docker Swarm $ dockerrun Batteries included but swappable
  • 18.
    Docker Compose: SimplificaAplicaçõ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! !
  • 19.
    Docker Compose containers: web: build: . command:python app.py ports: - "5000:5000" volumes: - .:/code links: - redis environment: - PYTHONUNBUFFERED=1 redis: image: redis:latest command: redis-server --appendonly yes
  • 20.
  • 21.
  • 22.
    A Docker DistributedApplication $ dockerHappy Devs Ops Flexibility Web x8 Cache x2Database x2
  • 23.
    Ecosistema de Gestãode Containers Infrastructure Clustering and Scheduling Service Discovery
  • 24.
    Docker Hub Promo code:docker-sp-meetup https://registry.hub.docker.com/plans/micro @rhashioka
  • 25.