SlideShare a Scribd company logo
1 of 55
Download to read offline
O FANTÁSTICO MUNDO
DE DOCKER
Stefan Teixeira
@stefan_teixeira
stefanfk@gmail.com
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: stefanfk@gmail.com
• Twitter: twitter.com/stefan_teixeira
• Facebook: facebook.com/stefan.teixeira
• LinkedIn: linkedin.com/in/stefanteixeira
• GitHub: github.com/stefanteixeira
• SlideShare: slideshare.net/stefanteixeira
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
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
stefanfk@gmail.com
stefanteixeira.com.br
stefanteixeira.com

More Related Content

What's hot

What's hot (20)

Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de Docker
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolso
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop docker
 

Viewers also liked

Viewers also liked (15)

Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your Software
 
DevOps utilizando Docker
DevOps utilizando DockerDevOps utilizando Docker
DevOps utilizando Docker
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
Automatizando a implantação e operação de aplicações conteinerizadas no...
Automatizando a implantação e operação de aplicações conteinerizadas no...Automatizando a implantação e operação de aplicações conteinerizadas no...
Automatizando a implantação e operação de aplicações conteinerizadas no...
 
Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm
 
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com BeanstalkAWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
 
Como aumentar a eficiência dos seus testes manuais
Como aumentar a eficiência dos seus testes manuaisComo aumentar a eficiência dos seus testes manuais
Como aumentar a eficiência dos seus testes manuais
 
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxariaTDC 2016 Floripa - Aprendendo Docker sem bruxaria
TDC 2016 Floripa - Aprendendo Docker sem bruxaria
 
Testes Componentizados: Como esta Técnica pode Aumentar a Produtividade
Testes Componentizados: Como esta Técnica pode Aumentar a ProdutividadeTestes Componentizados: Como esta Técnica pode Aumentar a Produtividade
Testes Componentizados: Como esta Técnica pode Aumentar a Produtividade
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
 
Docker
DockerDocker
Docker
 
Docker para deploy de aplicação
Docker para deploy de aplicaçãoDocker para deploy de aplicação
Docker para deploy de aplicação
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e Docker
 
Blue Green Deployment com Docker
Blue Green Deployment com DockerBlue Green Deployment com Docker
Blue Green Deployment com Docker
 

Similar to TDC 2015 POA - O Fantástico Mundo de Docker

Similar to TDC 2015 POA - O Fantástico Mundo de Docker (20)

Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
Vagrant sti
Vagrant stiVagrant sti
Vagrant sti
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
 

More from Stefan Teixeira

More from Stefan Teixeira (20)

Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
Scrum Gathering Portugal 2016 - Containerizing Tests with DockerScrum Gathering Portugal 2016 - Containerizing Tests with Docker
Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
 
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnitAgile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
Agile Brazil 2016 - 5 fundamentos essenciais de padrões xUnit
 
Latinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open sourceLatinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open source
 
Ágiles 2016 - Using open source tools to support Continuous Delivery
Ágiles 2016 - Using open source tools to support Continuous DeliveryÁgiles 2016 - Using open source tools to support Continuous Delivery
Ágiles 2016 - Using open source tools to support Continuous Delivery
 
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
 
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
 
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecerTDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
 
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCTDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
 
Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com Locust
 
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
4º Encontro do Grupo de Testes Carioca - Testes de Carga com Locust
 
Meetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com LocustMeetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com Locust
 
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
 
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e PromisesTDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
 
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesVR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
 
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorMeetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
 
Meetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
Meetup AngularJS Rio - Testes e2e para apps AngularJS com ProtractorMeetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
Meetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
 
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
 
Agile Brazil 2015 - Testando na Nuvem a UI e o JavaScript de sua aplicação
Agile Brazil 2015 - Testando na Nuvem a UI e o JavaScript de sua aplicaçãoAgile Brazil 2015 - Testando na Nuvem a UI e o JavaScript de sua aplicação
Agile Brazil 2015 - Testando na Nuvem a UI e o JavaScript de sua aplicação
 
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
Scrum Gathering Rio 2015 - Testando na nuvem a UI e o JavaScript de sua aplic...
 

TDC 2015 POA - O Fantástico Mundo de Docker