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
37
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
79
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
stefanteixeira
0
110
Latinoware 2016 - Continuous Delivery com ferramentas open source
stefanteixeira
0
63
Ágiles 2016 - Using open source tools to support Continuous Delivery
stefanteixeira
0
48
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous Delivery
stefanteixeira
0
42
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
stefanteixeira
0
120
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-source
stefanteixeira
0
80
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
stefanteixeira
0
68
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
stefanteixeira
0
59
Other Decks in Programming
See All in Programming
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.3k
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
500
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
240
ドメインイベント増えすぎ問題
h0r15h0
2
540
GitHub CopilotでTypeScriptの コード生成するワザップ
starfish719
26
5.8k
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
410
선언형 UI에서의 상태관리
l2hyunwoo
0
250
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
200
良いユニットテストを書こう
mototakatsu
11
3.5k
テストケースの名前はどうつけるべきか?
orgachem
PRO
1
180
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
220
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
530
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Automating Front-end Workflow
addyosmani
1366
200k
Scaling GitHub
holman
459
140k
What's in a price? How to price your products and services
michaelherold
244
12k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Rails Girls Zürich Keynote
gr2m
94
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
Embracing the Ebb and Flow
colly
84
4.5k
Building an army of robots
kneath
302
44k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
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