55
O FANTÁSTICO MUNDO DE DOCKER Stefan Teixeira @stefan_teixeira [email protected] stefanteixeira.com.br stefanteixeira.com

TDC 2015 POA - O Fantástico Mundo de Docker

Embed Size (px)

Citation preview

Page 1: TDC 2015 POA - 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: TDC 2015 POA - 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: TDC 2015 POA - O Fantástico Mundo de Docker
Page 4: TDC 2015 POA - O Fantástico Mundo de Docker

Descobrindo containers

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

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

VMs x Containers

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

• Reprodutibilidade

Por que?

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

• Reprodutibilidade

• Escalabilidade

Por que?

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

• Reprodutibilidade

• Escalabilidade

• MUITO rápido :)

Por que?

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

• Oracle Solaris Zones - 2004

História dos Containers

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

• Oracle Solaris Zones - 2004

• LinuX Containers (LXC) - 2008

História dos Containers

Page 11: TDC 2015 POA - 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: TDC 2015 POA - 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: TDC 2015 POA - O Fantástico Mundo de Docker
Page 14: TDC 2015 POA - O Fantástico Mundo de Docker

Open Container Initiative

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

Page 15: TDC 2015 POA - 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: TDC 2015 POA - O Fantástico Mundo de Docker

• Imagens

Conceitos principais

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

• Imagens

• Containers

Conceitos principais

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

• Imagens

• Containers

• Dockerfiles

Conceitos principais

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

Ecossistema

• Compose

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

Ecossistema

• Compose

• Swarm

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

Ecossistema

• Compose

• Swarm

• Machine

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

Ecossistema

• Compose

• Swarm

• Machine

• Kitematic

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

DockerHub

https://hub.docker.com/

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

Arquitetura: Visão Geral

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

Page 25: TDC 2015 POA - 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: TDC 2015 POA - O Fantástico Mundo de Docker

Host x Client: Linux

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

Host x Client: Windows / OS X

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

Host x Client: Windows / OS X

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

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

Documentação oficial

https://docs.docker.com

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

Image Layers

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

Dockerfiles

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

Dockerfiles: Instruções

• FROM

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

• FROM • RUN

Dockerfiles: Instruções

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

• FROM • RUN • ADD / COPY

Dockerfiles: Instruções

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

• FROM • RUN • ADD / COPY • EXPOSE

Dockerfiles: Instruções

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

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

Dockerfiles: Instruções

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

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

Dockerfiles: Instruções

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

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

Dockerfiles: Instruções

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

Dockerfiles: Exemplo

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

Dockerfiles: Boas Práticas

• 1 processo por container

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

Dockerfiles: Boas Práticas

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

Page 42: TDC 2015 POA - 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: TDC 2015 POA - 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: TDC 2015 POA - O Fantástico Mundo de Docker

Comandos Essenciais (CLI)

Page 45: TDC 2015 POA - 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: TDC 2015 POA - 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: TDC 2015 POA - 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: TDC 2015 POA - 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: TDC 2015 POA - 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: TDC 2015 POA - 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: TDC 2015 POA - O Fantástico Mundo de Docker

Hands-on

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

Hands-on

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

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

Livros recomendados

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

Outros projetos interessantes

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

Obrigado!

Stefan Teixeira @stefan_teixeira

[email protected] stefanteixeira.com.br

stefanteixeira.com