alagoas dev day

21
Docker do zero ao deploy Marcio Trindade

Upload: marcio-trindade

Post on 05-Aug-2015

513 views

Category:

Technology


2 download

TRANSCRIPT

Docker do zero ao deploy

Marcio Trindade

Quem sou eu

• Marcio Trindade (@marciotrindade);

• Formado em Ed. Física;

• Trabalho com desenvolvimento desde 2004;

• Blog: marciotrindade.com;

• Trabalho com Ruby desde 2008;

Antes era assim

Agora está assimWebServicenginx + ssl + assets

Banco de Dadospostgresql + pgv8 + v8

FilaRedis

WorkersRuby + sidekiq

Web appRuby + rails

APIGolang

CacheMemcached

Por que Container

• Conseguir isolar cada parte da sua aplicação;

• Tudo o que cada parte precisa está lá;

• Ter o ambiente mais próximo ao de produção;

• Simplificar o desenvolvimento;

• Simplificar o deploy;

Container x VM

O que é Docker?

• Uma plataforma open-source para gerenciar

containers;

• Escrito pela equipe do Docker, Inc.;

• Sob a licença Apache 2.0;

Componentes

• Docker client and server

• Docker Images

• Registries

• Docker Containers

Client and server

• Já vem com um client (cli);

• Conversa com o servidor ou daemon;

• Possui uma api RESTfull completa;

• Pode estar ou não na mesma maquina;

Docker images• Forma do docker construir containers;

• É a criação do ambiente a partir do file system com instruções do tipo: Add a fileRun a comand

• Podemos considerar imagens como o código fonte dos containers.

Registries

• Um repositório de imagens;

• Pode ser público ou privado;

• Docker Hub (público);

• Possui milhares de imagens prontas;

Containers

• Criado a partir de uma imagem;

• Contém a sua app ou serviço;

• É a camada de execução;

• Pode rodar um ou mais processos;

Básico de Docker

Live code

Dockerfile

• Evite fazer commit

• Forma de automatizar

• Simples e leve

• Rápido (usa cache)

Dockerfile• FROM - A imagem pra utilizar

FROM ubuntu:14.04

• RUN - Executar comandos necessários pra preparar o sistema RUN apt-get install -y package-foo && apt-get install -y package-bar

• CMD - Comando que seu container deve rodar CMD ["rake", "db:migrate"]

• EXPOSE - Expor a porta que o serviço vai escutar EXPOSE 80

• ENV - Criar variaveis de ambiente ENV RAILS_ENV production

• COPY or ADD - Copiar um conteúdo pra dentro do container COPY Gemfile /myapp/Gemfile

• VOLUME - Expor uma area de de arquivos mutaveis VOLUME . /my_app

• WORKDIR - Qual o path de trabalho da sua aplicação WORKDIR /my_app

Dockerfile

Live code

Docker Compose• Antigo "fig";

• Cria e gerencia containers docker;

• Define multi-containers em um único arquivo;

• Cria link entre os containers;

• Sobe suas aplicações com um único comando;

Docker Compose

Live code

Referências• The Docker Book - James Turnbull

• https://www.docker.com/

• https://docs.docker.com/compose/

• https://www.youtube.com/watch?v=ZzQfxoMFH0U

• http://www.rightscale.com/blog/cloud-management-best-practices/docker-vs-vms-combining-both-cloud-portability-nirvana

Duvidas?

Marcio Trindade by Locaweb