testadores 2015 - o fantástico mundo de docker

55
O Fantástico Mundo de Docker Stefan Teixeira @stefan_teixeira [email protected] stefanteixeira.com.br stefanteixeira.com

Upload: stefan-teixeira

Post on 09-Jan-2017

695 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Testadores 2015 - O Fantástico Mundo de Docker

O Fantástico Mundo de Docker

Stefan Teixeira @stefan_teixeira

[email protected] stefanteixeira.com.br

stefanteixeira.com

Page 2: Testadores 2015 - O Fantástico Mundo de Docker

About meStefan 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: [email protected] • Twitter: twitter.com/stefan_teixeira • Facebook: facebook.com/stefan.teixeira • LinkedIn: linkedin.com/in/stefanteixeira • GitHub: github.com/stefanteixeira • SlideShare: slideshare.net/stefanteixeira

Page 3: Testadores 2015 - O Fantástico Mundo de Docker
Page 4: Testadores 2015 - O Fantástico Mundo de Docker

Descobrindo containers

Page 5: Testadores 2015 - O Fantástico Mundo de Docker

Fonte: https://www.docker.com/whatisdocker

VMs x Containers

Page 6: Testadores 2015 - O Fantástico Mundo de Docker

• Reprodutibilidade

Por quê?

Page 7: Testadores 2015 - O Fantástico Mundo de Docker

• Reprodutibilidade

• Escalabilidade

Por quê?

Page 8: Testadores 2015 - O Fantástico Mundo de Docker

• Reprodutibilidade

• Escalabilidade

• MUITO rápido :)

Por quê?

Page 9: Testadores 2015 - O Fantástico Mundo de Docker

• Oracle Solaris Zones - 2004

História dos Containers

Page 10: Testadores 2015 - O Fantástico Mundo de Docker

• Oracle Solaris Zones - 2004

• LinuX Containers (LXC) - 2008

História dos Containers

Page 11: Testadores 2015 - O Fantástico Mundo de Docker

• Oracle Solaris Zones - 2004

• LinuX Containers (LXC) - 2008

• Google’s lmctfy (Let Me Contain That For You) - 2013

História dos Containers

Page 12: Testadores 2015 - O Fantástico Mundo de Docker

• Oracle Solaris Zones - 2004

• LinuX Containers (LXC) - 2008

• Google’s lmctfy (Let Me Contain That For You) - 2013

• Docker - 2013

História dos Containers

Page 13: Testadores 2015 - O Fantástico Mundo de Docker
Page 14: Testadores 2015 - O Fantástico Mundo de Docker

Open Container Initiative

http://opencontainers.org/ http://blog.docker.com/2015/06/open-container-project-foundation/

Page 15: Testadores 2015 - O Fantástico Mundo de Docker

sudo apt-get install baidu ?

Fonte: http://blog.docker.com/2013/12/baidu-using-docker-for-its-paas/

Page 16: Testadores 2015 - O Fantástico Mundo de Docker

• Imagens

Conceitos principais

Page 17: Testadores 2015 - O Fantástico Mundo de Docker

• Imagens

• Containers

Conceitos principais

Page 18: Testadores 2015 - O Fantástico Mundo de Docker

• Imagens

• Containers

• Dockerfiles

Conceitos principais

Page 19: Testadores 2015 - O Fantástico Mundo de Docker

Ecossistema

• Compose

Page 20: Testadores 2015 - O Fantástico Mundo de Docker

Ecossistema

• Compose

• Swarm

Page 21: Testadores 2015 - O Fantástico Mundo de Docker

Ecossistema

• Compose

• Swarm

• Machine

Page 22: Testadores 2015 - O Fantástico Mundo de Docker

Ecossistema

• Compose

• Swarm

• Machine

• Kitematic

Page 23: Testadores 2015 - O Fantástico Mundo de Docker

DockerHub

https://hub.docker.com/

Page 24: Testadores 2015 - O Fantástico Mundo de Docker

Arquitetura: Visão Geral

Fonte: https://docs.docker.com/introduction/understanding-docker/

Page 25: Testadores 2015 - O Fantástico Mundo de Docker

Arquitetura: Execdriver

Fonte: https://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/

Page 26: Testadores 2015 - O Fantástico Mundo de Docker

Host x Client: Linux

Page 27: Testadores 2015 - O Fantástico Mundo de Docker

Host x Client: Windows / OS X

Page 28: Testadores 2015 - O Fantástico Mundo de Docker

Host x Client: Windows / OS X

Docker Toolbox https://www.docker.com/toolbox

Page 29: Testadores 2015 - O Fantástico Mundo de Docker

Documentação oficial

https://docs.docker.com

Page 30: Testadores 2015 - O Fantástico Mundo de Docker

Image Layers

Page 31: Testadores 2015 - O Fantástico Mundo de Docker

Dockerfiles

Page 32: Testadores 2015 - O Fantástico Mundo de Docker

Dockerfiles: Instruções

• FROM

Page 33: Testadores 2015 - O Fantástico Mundo de Docker

• FROM • RUN

Dockerfiles: Instruções

Page 34: Testadores 2015 - O Fantástico Mundo de Docker

• FROM • RUN • ADD / COPY

Dockerfiles: Instruções

Page 35: Testadores 2015 - O Fantástico Mundo de Docker

• FROM • RUN • ADD / COPY • EXPOSE

Dockerfiles: Instruções

Page 36: Testadores 2015 - O Fantástico Mundo de Docker

• FROM • RUN • ADD / COPY • EXPOSE • ENV

Dockerfiles: Instruções

Page 37: Testadores 2015 - O Fantástico Mundo de Docker

• FROM • RUN • ADD / COPY • EXPOSE • ENV • VOLUME

Dockerfiles: Instruções

Page 38: Testadores 2015 - O Fantástico Mundo de Docker

• FROM • RUN • ADD / COPY • EXPOSE • ENV • VOLUME • CMD / ENTRYPOINT

Dockerfiles: Instruções

Page 39: Testadores 2015 - O Fantástico Mundo de Docker

Dockerfiles: Exemplo

Page 40: Testadores 2015 - O Fantástico Mundo de Docker

Dockerfiles: Boas Práticas

• 1 processo por container

Page 41: Testadores 2015 - O Fantástico Mundo de Docker

Dockerfiles: Boas Práticas

• 1 processo por container • Minimize o número de camadas

Page 42: Testadores 2015 - O Fantástico Mundo de Docker

Dockerfiles: Boas Práticas

• 1 processo por container • Minimize o número de camadas • Evite instalar pacotes

desnecessários

Page 43: Testadores 2015 - O Fantástico Mundo de Docker

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

Page 44: Testadores 2015 - O Fantástico Mundo de Docker

Comandos Essenciais (CLI)

Page 45: Testadores 2015 - O Fantástico Mundo de Docker

Comandos essenciais (CLI)

• Buildar uma imagem

docker build -t <nome_imagem> <path_dockerfile>

Outros parâmetros úteis: • --nocache

Page 46: Testadores 2015 - O Fantástico Mundo de Docker

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>

Page 47: Testadores 2015 - O Fantástico Mundo de Docker

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

Page 48: Testadores 2015 - O Fantástico Mundo de Docker

Comandos essenciais (CLI)

• Iniciar sessão bash em um container

docker exec -it <nome_container> bash

PS: o container deve estar rodando!

Page 49: Testadores 2015 - O Fantástico Mundo de Docker

Comandos essenciais (CLI)

• Ver todas as imagens do host

docker images

• Ver todos os containers

docker ps -a

Page 50: Testadores 2015 - O Fantástico Mundo de Docker

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!

Page 51: Testadores 2015 - O Fantástico Mundo de Docker

Hands-on

Page 52: Testadores 2015 - O Fantástico Mundo de Docker

Hands-on

• https://github.com/stefanteixeira/todoapp-flask

Page 53: Testadores 2015 - O Fantástico Mundo de Docker

Livros recomendados

Page 54: Testadores 2015 - O Fantástico Mundo de Docker

Outros projetos interessantes

Page 55: Testadores 2015 - O Fantástico Mundo de Docker

Obrigado!

Stefan Teixeira @stefan_teixeira

[email protected] stefanteixeira.com.br

stefanteixeira.com