Download - 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
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
Descobrindo containers
• Reprodutibilidade
Por que?
• Reprodutibilidade
• Escalabilidade
Por que?
• Reprodutibilidade
• Escalabilidade
• MUITO rápido :)
Por que?
• Oracle Solaris Zones - 2004
História dos Containers
• Oracle Solaris Zones - 2004
• LinuX Containers (LXC) - 2008
História dos Containers
• Oracle Solaris Zones - 2004
• LinuX Containers (LXC) - 2008
• Google’s lmctfy (Let Me Contain That For You) - 2013
História dos Containers
• Oracle Solaris Zones - 2004
• LinuX Containers (LXC) - 2008
• Google’s lmctfy (Let Me Contain That For You) - 2013
• Docker - 2013
História dos Containers
Open Container Initiative
http://opencontainers.org/ http://blog.docker.com/2015/06/open-container-project-foundation/
sudo apt-get install baidu ?
Fonte: http://blog.docker.com/2013/12/baidu-using-docker-for-its-paas/
• Imagens
Conceitos principais
• Imagens
• Containers
Conceitos principais
• Imagens
• Containers
• Dockerfiles
Conceitos principais
Ecossistema
• Compose
Ecossistema
• Compose
• Swarm
Ecossistema
• Compose
• Swarm
• Machine
Ecossistema
• Compose
• Swarm
• Machine
• Kitematic
Arquitetura: Visão Geral
Fonte: https://docs.docker.com/introduction/understanding-docker/
Arquitetura: Execdriver
Fonte: https://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/
Host x Client: Linux
Host x Client: Windows / OS X
Host x Client: Windows / OS X
Docker Toolbox https://www.docker.com/toolbox
Image Layers
Dockerfiles
Dockerfiles: Instruções
• FROM
• FROM • RUN
Dockerfiles: Instruções
• FROM • RUN • ADD / COPY
Dockerfiles: Instruções
• FROM • RUN • ADD / COPY • EXPOSE
Dockerfiles: Instruções
• FROM • RUN • ADD / COPY • EXPOSE • ENV
Dockerfiles: Instruções
• FROM • RUN • ADD / COPY • EXPOSE • ENV • VOLUME
Dockerfiles: Instruções
• FROM • RUN • ADD / COPY • EXPOSE • ENV • VOLUME • CMD / ENTRYPOINT
Dockerfiles: Instruções
Dockerfiles: Exemplo
Dockerfiles: Boas Práticas
• 1 processo por container
Dockerfiles: Boas Práticas
• 1 processo por container • Minimize o número de camadas
Dockerfiles: Boas Práticas
• 1 processo por container • Minimize o número de camadas • Evite instalar pacotes
desnecessários
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/)
Comandos Essenciais (CLI)
Comandos essenciais (CLI)
• Buildar uma imagem
docker build -t <nome_imagem> <path_dockerfile>
Outros parâmetros úteis: • --nocache
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>
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
Comandos essenciais (CLI)
• Iniciar sessão bash em um container
docker exec -it <nome_container> bash
PS: o container deve estar rodando!
Comandos essenciais (CLI)
• Ver todas as imagens do host
docker images
• Ver todos os containers
docker ps -a
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!
Hands-on
Hands-on
• https://github.com/stefanteixeira/todoapp-flask
Livros recomendados
Outros projetos interessantes
Obrigado!
Stefan Teixeira @stefan_teixeira
[email protected] stefanteixeira.com.br
stefanteixeira.com