Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TDC 2015 Porto Alegre - O Fantástico Mundo de Docker
Search
Stefan Teixeira
September 24, 2015
Programming
1
45
TDC 2015 Porto Alegre - O Fantástico Mundo de Docker
Palestra apresentada na trilha de Testes do TDC 2015 Porto Alegre, no dia 24/09.
Stefan Teixeira
September 24, 2015
Tweet
Share
More Decks by Stefan Teixeira
See All by Stefan Teixeira
Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
stefanteixeira
0
76
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
stefanteixeira
0
100
Latinoware 2016 - Continuous Delivery com ferramentas open source
stefanteixeira
0
58
Ágiles 2016 - Using open source tools to support Continuous Delivery
stefanteixeira
0
47
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous Delivery
stefanteixeira
0
39
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
stefanteixeira
0
110
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-source
stefanteixeira
0
79
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
stefanteixeira
0
64
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
stefanteixeira
0
57
Other Decks in Programming
See All in Programming
Native Federation: The Future of Micro Frontends in Angular
manfredsteyer
PRO
0
140
Docker_OSS_ホスティング入門
satokoki645
0
110
AppRouter Panel Talk
yosuke_furukawa
PRO
1
500
検証も兼ねて個人開発でHonoとかと向き合った話
hanetsuki
1
1.4k
Micro Frontends for Java Microservices - Utah JUG 2024
mraible
PRO
1
110
Git Lint
bkuhlmann
4
770
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
480
見た目から始める生産性向上
ikumatadokoro
10
1.5k
Kotlin Multiplatform at Stable and Beyond (Android Makers 2024)
zsmb
0
550
禅の心を手に入れよ
eltociear
1
430
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
1.1k
Timeline エディター拡張入門
yucchiy
0
280
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
125
8.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Navigating Team Friction
lara
179
13k
Fireside Chat
paigeccino
22
2.6k
Happy Clients
brianwarren
92
6.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
Debugging Ruby Performance
tmm1
70
11k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
The Language of Interfaces
destraynor
151
23k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
In The Pink: A Labor of Love
frogandcode
138
21k
Transcript
O FANTÁSTICO MUNDO DE DOCKER Stefan Teixeira @stefan_teixeira
[email protected]
stefanteixeira.com.br
stefanteixeira.com
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:
[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
None
Descobrindo containers
Fonte: https:/ /www.docker.com/whatisdocker VMs x 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
None
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
DockerHub https:/ /hub.docker.com/
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
Documentação oficial https:/ /docs.docker.com
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