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
Stefan Teixeira
September 24, 2015
Programming
1
54
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
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
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
1.1k
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.2k
明日から始めるリファクタリング
ryounasso
0
120
Things You Thought You Didn’t Need To Care About That Have a Big Impact On Your Job
hollycummins
0
200
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
2
670
CSC509 Lecture 02
javiergs
PRO
0
410
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1k
チームの境界をブチ抜いていけ
tokai235
0
110
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.7k
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
1.1k
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
NetworkXとGNNで学ぶグラフデータ分析入門〜複雑な関係性を解き明かすPythonの力〜
mhrtech
3
1.1k
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
51k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
For a Future-Friendly Web
brad_frost
180
9.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Cult of Friendly URLs
andyhume
79
6.6k
Making Projects Easy
brettharned
119
6.4k
Agile that works and the tools we love
rasmusluckow
331
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.2k
Bash Introduction
62gerente
615
210k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
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