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 D...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Stefan Teixeira
September 24, 2015
Programming
56
1
Share
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
More Decks by Stefan Teixeira
See All by Stefan Teixeira
Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
stefanteixeira
0
86
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
stefanteixeira
0
120
Latinoware 2016 - Continuous Delivery com ferramentas open source
stefanteixeira
0
70
Ágiles 2016 - Using open source tools to support Continuous Delivery
stefanteixeira
0
59
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous Delivery
stefanteixeira
0
50
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
stefanteixeira
0
130
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-source
stefanteixeira
0
88
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
stefanteixeira
0
79
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
stefanteixeira
0
64
Other Decks in Programming
See All in Programming
今さら聞けないCancellationToken
htkym
0
210
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
170
新規プロダクトを高速で生み出すハーネスエンジニアリング
seanchas116
19
7.8k
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
1.9k
3Dシーンの圧縮
fadis
1
570
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
530
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
430
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
130
[KCD Czech] eBPF Meets the GPU: Future of AI Infra Observability
doniacld
0
130
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
230
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
230
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
150
Raft: Consensus for Rubyists
vanstee
141
7.5k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
160
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
460
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
150
The Spectacular Lies of Maps
axbom
PRO
1
780
Ethics towards AI in product and experience design
skipperchong
2
290
New Earth Scene 8
popppiees
3
2.3k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
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