TDC 2015 POA - O Fantástico Mundo de Docker

1,808 views

Published on

Palestra apresentada na trilha de Testes do TDC 2015 Porto Alegre, no dia 24/09.

Published in: Technology

TDC 2015 POA - O Fantástico Mundo de Docker

  1. 1. O FANTÁSTICO MUNDO DE DOCKER Stefan Teixeira @stefan_teixeira stefanfk@gmail.com stefanteixeira.com.br stefanteixeira.com
  2. 2. About me Stefan Teixeira • QA Engineer @ M4U • Entusiasta de Automação de Testes, Agile Testing e DevOps • Blogs técnicos: stefanteixeira.com.br (pt-br) / stefanteixeira.com (en) Contatos: • E-mail: stefanfk@gmail.com • Twitter: twitter.com/stefan_teixeira • Facebook: facebook.com/stefan.teixeira • LinkedIn: linkedin.com/in/stefanteixeira • GitHub: github.com/stefanteixeira • SlideShare: slideshare.net/stefanteixeira
  3. 3. Descobrindo containers
  4. 4. Fonte: https://www.docker.com/whatisdocker VMs x Containers
  5. 5. • Reprodutibilidade Por que?
  6. 6. • Reprodutibilidade • Escalabilidade Por que?
  7. 7. • Reprodutibilidade • Escalabilidade • MUITO rápido :) Por que?
  8. 8. • Oracle Solaris Zones - 2004 História dos Containers
  9. 9. • Oracle Solaris Zones - 2004 • LinuX Containers (LXC) - 2008 História dos Containers
  10. 10. • Oracle Solaris Zones - 2004 • LinuX Containers (LXC) - 2008 • Google’s lmctfy (Let Me Contain That For You) - 2013 História dos Containers
  11. 11. • Oracle Solaris Zones - 2004 • LinuX Containers (LXC) - 2008 • Google’s lmctfy (Let Me Contain That For You) - 2013 • Docker - 2013 História dos Containers
  12. 12. Open Container Initiative http://opencontainers.org/ http://blog.docker.com/2015/06/open-container-project-foundation/
  13. 13. sudo apt-get install baidu ? Fonte: http://blog.docker.com/2013/12/baidu-using-docker-for-its-paas/
  14. 14. • Imagens Conceitos principais
  15. 15. • Imagens • Containers Conceitos principais
  16. 16. • Imagens • Containers • Dockerfiles Conceitos principais
  17. 17. Ecossistema • Compose
  18. 18. Ecossistema • Compose • Swarm
  19. 19. Ecossistema • Compose • Swarm • Machine
  20. 20. Ecossistema • Compose • Swarm • Machine • Kitematic
  21. 21. DockerHub https://hub.docker.com/
  22. 22. Arquitetura: Visão Geral Fonte: https://docs.docker.com/introduction/understanding-docker/
  23. 23. Arquitetura: Execdriver Fonte: https://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers- and-libcontainer/
  24. 24. Host x Client: Linux
  25. 25. Host x Client: Windows / OS X
  26. 26. Host x Client: Windows / OS X Docker Toolbox https://www.docker.com/toolbox
  27. 27. Documentação oficial https://docs.docker.com
  28. 28. Image Layers
  29. 29. Dockerfiles
  30. 30. Dockerfiles: Instruções • FROM
  31. 31. • FROM • RUN Dockerfiles: Instruções
  32. 32. • FROM • RUN • ADD / COPY Dockerfiles: Instruções
  33. 33. • FROM • RUN • ADD / COPY • EXPOSE Dockerfiles: Instruções
  34. 34. • FROM • RUN • ADD / COPY • EXPOSE • ENV Dockerfiles: Instruções
  35. 35. • FROM • RUN • ADD / COPY • EXPOSE • ENV • VOLUME Dockerfiles: Instruções
  36. 36. • FROM • RUN • ADD / COPY • EXPOSE • ENV • VOLUME • CMD / ENTRYPOINT Dockerfiles: Instruções
  37. 37. Dockerfiles: Exemplo
  38. 38. Dockerfiles: Boas Práticas • 1 processo por container
  39. 39. Dockerfiles: Boas Práticas • 1 processo por container • Minimize o número de camadas
  40. 40. Dockerfiles: Boas Práticas • 1 processo por container • Minimize o número de camadas • Evite instalar pacotes desnecessários
  41. 41. Dockerfiles: Boas Práticas • 1 processo por container • Minimize o número de camadas • Evite instalar pacotes desnecessários • Entenda como o cache do Docker funciona (veja http://thenewstack.io/understanding-the-docker-cache-for-faster-builds/ e https:// docs.docker.com/articles/dockerfile_best-practices/)
  42. 42. Comandos Essenciais (CLI)
  43. 43. Comandos essenciais (CLI) • Buildar uma imagem docker build -t <nome_imagem> <path_dockerfile> Outros parâmetros úteis: • --nocache
  44. 44. Comandos essenciais (CLI) • Rodar um container docker run -d -p <porta_host>:<porta_container> --name <nome_container> <nome_imagem> Outros parâmetros úteis: • --link <nome_container>:<alias> • --add-host <nome_host>:<IP>
  45. 45. Comandos essenciais (CLI) • Consultar logs de um container docker logs <nome_container> PS: para acompanhar os logs em tempo real, use o parâmetro -f
  46. 46. Comandos essenciais (CLI) • Iniciar sessão bash em um container docker exec -it <nome_container> bash PS: o container deve estar rodando!
  47. 47. Comandos essenciais (CLI) • Ver todas as imagens do host docker images • Ver todos os containers docker ps -a
  48. 48. Comandos essenciais (CLI) • Remover um container docker rm -f <nome_container> • Remover uma imagem docker rmi -f <nome_imagem> PS: antes de remover uma imagem, remova todos os containers associados a ela!
  49. 49. Hands-on
  50. 50. Hands-on • https://github.com/ stefanteixeira/todoapp-flask
  51. 51. Livros recomendados
  52. 52. Outros projetos interessantes
  53. 53. Obrigado! Stefan Teixeira @stefan_teixeira stefanfk@gmail.com stefanteixeira.com.br stefanteixeira.com

×