Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Alagoas Dev Day

Palestra sobre docker no Alagoas Dev Day de 2015

Alagoas Dev Day

  1. 1. Docker do zero ao deploy Marcio Trindade
  2. 2. Quem sou eu • Marcio Trindade (@marciotrindade); • Formado em Ed. Física; • Trabalho com desenvolvimento desde 2004; • Blog: marciotrindade.com; • Trabalho com Ruby desde 2008;
  3. 3. Antes era assim
  4. 4. Agora está assim WebService nginx + ssl + assets Banco de Dados postgresql + pgv8 + v8 Fila Redis Workers Ruby + sidekiq Web app Ruby + rails API Golang Cache Memcached
  5. 5. 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;
  6. 6. Container x VM
  7. 7. O que é Docker? • Uma plataforma open-source para gerenciar containers; • Escrito pela equipe do Docker, Inc.; • Sob a licença Apache 2.0;
  8. 8. Componentes • Docker client and server • Docker Images • Registries • Docker Containers
  9. 9. 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;
  10. 10. Docker images • Forma do docker construir containers; • É a criação do ambiente a partir do file system com instruções do tipo:
 Add a file
 Run a comand • Podemos considerar imagens como o código fonte dos containers.
  11. 11. Registries • Um repositório de imagens; • Pode ser público ou privado; • Docker Hub (público); • Possui milhares de imagens prontas;
  12. 12. 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;
  13. 13. Básico de Docker Live code
  14. 14. Dockerfile • Evite fazer commit • Forma de automatizar • Simples e leve • Rápido (usa cache)
  15. 15. 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
  16. 16. Dockerfile Live code
  17. 17. 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;
  18. 18. Docker Compose Live code
  19. 19. 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
  20. 20. Duvidas? Marcio Trindade by Locaweb

×