Orquestrando Docker Containers
Machine, Swarm e ComposeRoberto 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 ([email protected])!
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
$ docker Happy Devs
Ops Flexibility
Web x8 Cache x2 Database x2
Ecosistema de Gestão de Containers
Infrastructure
Clustering and Scheduling
Service Discovery
Docker HubPromo code: docker-sp-meetup
https://registry.hub.docker.com/plans/micro
@rhashioka
Obrigado!Perguntas?
@rhashioka
Top Related