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
Testadores 2015 - O Fantástico Mundo de Docker
Search
Stefan Teixeira
November 07, 2015
Programming
0
42
Testadores 2015 - O Fantástico Mundo de Docker
Palestra apresentada no Testadores 2ª 2015, no dia 07/11.
Stefan Teixeira
November 07, 2015
Tweet
Share
More Decks by Stefan Teixeira
See All by Stefan Teixeira
Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
stefanteixeira
0
81
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
stefanteixeira
0
110
Latinoware 2016 - Continuous Delivery com ferramentas open source
stefanteixeira
0
66
Ágiles 2016 - Using open source tools to support Continuous Delivery
stefanteixeira
0
53
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous Delivery
stefanteixeira
0
43
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
82
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
stefanteixeira
0
73
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
stefanteixeira
0
60
Other Decks in Programming
See All in Programming
チームの境界をブチ抜いていけ
tokai235
0
110
CSC509 Lecture 04
javiergs
PRO
0
300
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
950
CSC305 Lecture 06
javiergs
PRO
0
210
Flutterで分数(Fraction)を表示する方法
koukimiura
0
110
ててべんす独演会〜Flowの全てを語ります〜
tbsten
1
220
私達はmodernize packageに夢を見るか feat. go/analysis, go/ast / Go Conference 2025
kaorumuta
2
500
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.2k
Local Peer-to-Peer APIはどのように使われていくのか?
hal_spidernight
2
460
The Flutter Journey of Building a Live Streaming App — With a Side of Performance Tuning
u503
1
100
あなたの知らない「動画広告」の世界 - iOSDC Japan 2025
ukitaka
0
440
GitHub Actions × AWS OIDC連携の仕組みと経緯を理解する
ota1022
0
250
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
45
7.7k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
How to train your dragon (web standard)
notwaldorf
96
6.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Become a Pro
speakerdeck
PRO
29
5.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
4 Signs Your Business is Dying
shpigford
185
22k
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 quê?
• Reprodutibilidade • Escalabilidade Por quê?
• Reprodutibilidade • Escalabilidade • MUITO rápido :) Por quê?
• 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