orquestrando docker containers: machine, swarm e compose

25
Orquestrando Docker Containers Machine, Swarm e Compose Roberto G. Hashioka - @rhashioka – 2015-06-10 – São Paulo/SP

Upload: roberto-hashioka

Post on 09-Aug-2015

206 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Orquestrando Docker Containers: Machine, Swarm e Compose

Orquestrando Docker Containers

Machine, Swarm e ComposeRoberto G. Hashioka - @rhashioka – 2015-06-10 – São Paulo/SP!

Page 2: Orquestrando Docker Containers: Machine, Swarm e Compose

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!

Page 3: Orquestrando Docker Containers: Machine, Swarm e Compose

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)!

Page 4: Orquestrando Docker Containers: Machine, Swarm e Compose

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

Page 5: Orquestrando Docker Containers: Machine, Swarm e Compose

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)!

Page 6: Orquestrando Docker Containers: Machine, Swarm e Compose

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!

Page 7: Orquestrando Docker Containers: Machine, Swarm e Compose

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!

Page 8: Orquestrando Docker Containers: Machine, Swarm e Compose

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/)!

Page 9: Orquestrando Docker Containers: Machine, Swarm e Compose

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!

Page 10: Orquestrando Docker Containers: Machine, Swarm e Compose

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)!

Page 11: Orquestrando Docker Containers: Machine, Swarm e Compose

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 !

Page 12: Orquestrando Docker Containers: Machine, Swarm e Compose

Docker Machine

Page 13: Orquestrando Docker Containers: Machine, Swarm e Compose

Docker Machine

$ machine create

Page 14: Orquestrando Docker Containers: Machine, Swarm e Compose

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 !

Page 15: Orquestrando Docker Containers: Machine, Swarm e Compose

Docker Swarm

$ docker run swarm

Page 16: Orquestrando Docker Containers: Machine, Swarm e Compose

Docker Swarm

$ docker run

Page 17: Orquestrando Docker Containers: Machine, Swarm e Compose

Docker Swarm

$ docker run

Batteries included but swappable

Page 18: Orquestrando Docker Containers: Machine, Swarm e Compose

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!

!

Page 19: Orquestrando Docker Containers: Machine, Swarm e Compose

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

Page 20: Orquestrando Docker Containers: Machine, Swarm e Compose

Docker Compose

$ docker-compose

Page 21: Orquestrando Docker Containers: Machine, Swarm e Compose

Docker Compose

$ docker-compose

Page 22: Orquestrando Docker Containers: Machine, Swarm e Compose

A Docker Distributed Application

$ docker Happy Devs

Ops Flexibility

Web x8 Cache x2 Database x2

Page 23: Orquestrando Docker Containers: Machine, Swarm e Compose

Ecosistema de Gestão de Containers

Infrastructure

Clustering and Scheduling

Service Discovery

Page 24: Orquestrando Docker Containers: Machine, Swarm e Compose

Docker HubPromo code: docker-sp-meetup

https://registry.hub.docker.com/plans/micro

@rhashioka

Page 25: Orquestrando Docker Containers: Machine, Swarm e Compose

Obrigado!Perguntas?

@rhashioka