orquestrando docker containers: machine, swarm e compose

Post on 09-Aug-2015

206 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 (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

$ 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