SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Workshop
Docker
Quem sou eu
Rafael Gomes:
● Soteropolitano
● Apaixonado por compartilhamento
● Consultor na Thoughtworks
● Blog: techfree.com.br
● Twitter/github: @gomex
● Áreas de interesse/foco:
○ Cultura DevOps
○ Cloud
○ Entrega contínua
○ Automação de infraestrutura
○ Teste de infraestrutura
○ Monitoramento
O que estou fazendo de relevante agora
Livro:
● Pague quanto quiser,
inclusive nada
● Não precisa saber
nada de Docker
● Licenciado com
Creative Commons
http://tinyurl.com/docker-devel
Introdução ao ecossistema Docker
5
Projeto Open source
• 2B+ Download de Imagens
• 2000+ Contribudores
• 40K+ Estrelas no GitHub
• 200K+ App Dockerizadas
• 240 Meetups em 70 países
• 95K Membros de Meetup
Quem somos nos
Comunidade Docker Docker Inc
Provedor de container como serviço
• Plataforma de integração para dev e
ops
• Suporte técnico comercial
Patrocinado do projeto Docker
• Principal patrocinador do projeto
Docker
• Suporta mantenedores do projeto
Ecossistema do Docker
Dev Tools
Official Repositories
Operating Systems
Big Data
Service Discovery
Build / Continuous Integration
Configuration Management
Consulting &Training
Management
Storage
Clustering & Scheduling
Networking
Infrastructure & Service Providers
Storage
Security
Monitoring & Logging
6
Básico do Docker
Docker Image
The basis of a Docker container
Docker Container
The standard unit in which the application service resides
Docker Engine
Creates, ships and runs Docker containers deployable on physical or virtual
host locally, in a datacenter or cloud service provider
Docker Registry
On-premises registry for image storing and collaboration
Applications are changing
8
Loosely
Coupled
Services
Many Small
Servers
~2000 Today
Monolithic
Big Servers
Slow
changing
Rapidly
updated
O Desafio
9
Virtual machines
Server
Public Cloud
Disaster Recovery
Developer Laptop
Server Cluster
Data Center
Static
Website
Web Front EndBackground
Workers
User DB
Analytics
DB
Queue API
Endpoint
Development Test & QA Production Scale Out
• Pacotes com binários e suas dependências
• Softwares isolados uns dos outros
• Container como formato padrão
• Fácil portabilidade entre ambientes (GNU/Linux)
• Permite padronização no processo de
desenvolvimento
Solução: Containers Docker
10
Container
Solução
11
Static
Website
Web
Front End
Background
Workers
User DB
Analytics
DB
Queue
API
Endpoint
Na visão do desenvolvedor
• Build uma vez e rode onde quiser
• Um ambiente de execução portável, seguro e limpo para sua aplicação
• Não se preocupe com dependências perdidas, pacotes e outros pontos de dores durante
implantações futuras. Se rodou uma vez, rodará sempre
• Execute cada aplicação isolado em seu container, dessa forma você pode executar várias
versões de biblioteca e outras dependências para aplicação sem problemas
• Teste automatizado, integração, empacotamento, tudo que você pode fazer com script.
• Reduz/elimina preocupações com relação a diferentes plataformas GNU/Linux
• Barato e sem penalidade de performance para implantar seus ambientes. Restart instantâneo
de todo ambiente na velocidade da iniciação do serviço. Esse é o poder do Docker.
Na visão do sysadmin
•Configura uma vez, rode em qualquer lugar
• Faça o ciclo de vida completo ser mais eficiente, consistente e replicável
• Aumente a qualidade do código produzido pelos desenvolvedores
• Elimine inconsistência entre desenvolvimento, teste, produção e ambiente do cliente
• Melhoria significativa na velocidade e confiança do continuous deployment (CD) e continuous
integration (CI).
• Container são mais leves, impactam significativamente em problemas de performance, custo,
implantação e portabilidade que normalmente são associados a VMs.
Docker Toolbox
Tudo que você precisa dentro de
uma caixa
• Toolbox inclue:
– Kitematic
– Docker CLI
– Docker Machine
– Docker Swarm
– Docker Compose
14
Docker Toolbox
15
Vamos instalar!
Containers vs. VMs
Camadas
Imagem e Containers
Arquitetura
Comandos básicos
Comando Explicação
docker pull <nome da imagem> Baixar imagem
docker images Listar as imagens locais
docker inspect <id imagem ou container> Inspecionar informações
docker run <nome da imagem> Iniciar um container
docker ps Listas os containers
docker exec <nome do container> <cmd> Executar comandos no container
docker pull
Exercicio
Baixe a imagem do python
# docker pull python
docker images
Exercicio
Verifique se imagem python existe localmente
# docker images
docker inspect
Exercicio
Verifique qual comando padrão da imagem
# docker inspect python
Obs: Verifique o valor de "CMD"
docker run <parâmetros> <imagem> <CMD>
Parâmetro Explicação
-d Execução em background
--name Nomear o container
-m Limitar o uso de memória RAM
-c Balancear o uso de CPU
-p Mapeamento de porta
-v Mapeamento de volume
-i Modo interativo
-t Alocar pseudo tty
Exercicio
Execute a imagem python em modo interativo e
acesse seu shell
# docker run -it python
Restrição de memória
# docker run -m <memória> <imagem>
Exercicio
Execute o container com apenas 300MB de limite
# docker run -it -m 300M python
Balanceamento de CPU
# docker run -c <peso> <imagem>
Valor base 1024
Exercicio
Execute o container com metade do peso
# docker run -it -c 512 python
Mapeamento de porta
# docker run -p portahost:portacontainer <imagem>
Docker host
Virtualbox
Container
8080
80
192.168.99.100:80
Cliente
Exercicio
Efetue mapeamento da porta 80 para o container
da imagem tutum/apache-php
# docker run -it -p 80:80 tutum/apache-php
Verifique o ip da sua máquina virtual e acesse a
interface web
Mapeamento de volume
# docker run -v volhost:volcontainer <imagem>
Docker host
Virtualbox
Container
/Users/gomex/app
Cliente /Users
/app
Exercicio
Efetue mapeamento a sua pasta atual com a
pasta /root do container python
# docker run -it -v $PWD:/root python /bin/bash
Crie um arquivo na pasta /root do container,
depois saia do container e verifique se esse
arquivo está no host
docker volumes <parâmetros>
Parâmetro Explicação
Create <nome> Cria um volume
Inspect <nome> Inspeciona o volume
ls Lista os volumes existentes
rm Remove o volume
Crie um volume e efetue mapeamento com a
pasta /root do container python
# docker volume create --name teste
# docker run -it -v teste:/root python /bin/bash
Crie um arquivo na pasta /root do container,
depois saia do container, crie um outro container
com o mesmo volume e verifique se o arquivo
existe
# docker run -it -v teste:/root alpine /bin/sh
Exercicio
docker ps <parâmetros>
Parâmetro Explicação
-a Lista todos os containers, inclusive os desligados
-l Lista os ultimos containers, inclusive os desligados
-n Lista os últimos N containers, inclusive os desligados
-q Lista apenas os ids dos containers
Exercicio
Verifique quais containers estão em execução no
momento
# docker ps
Outros comandos
docker Explicação
stop <id do container> Desliga o container em execução
start <id do container> Inicia o mesmo container que estava finalizado
logs -f <id do container> Verifica o saida padrão do container
attach <id do container> Conectar ao processo que está executando
Exercicio
Vamos testar cada comando
# docker run -itd --name testepython python
# docker stop testepython
# docker start testepython
# docker logs -f testepython
# docker attach testepython
docker exec <parâmetros>
Parâmetro Explicação
-i Modo interativo
-t Com pseudo tty
Exercicio
Vamos iniciar um container em background e
enviar comandos
# docker run -itd --name testealpine alpine /bin/sh
# docker exec -it testealpine ls /etc
Exercicio
1) Crie uma conta na nuvem pública do docker (hub.docker.com)
2) Pesquise online sobre uma imagem que você tenha interesse
3) Leia README da imagem escolhida
4) Baixe a imagem escolhida
5) Execute a imagem escolhida com base nos dados do README
Sugestão:
https://hub.docker.com/r/berngp/docker-zabbix/
# docker run -d -P --name zabbix berngp/docker-zabbix
Dockerfile
Dockerfile
É o documento que contém todos os comandos
que o usuário poderia normalmente executar para
criar um ambiente.
Basicamente é uma descrição de procedimentos
para criação do seu ambiente.
Dockerfile
Instruções Explicação
FROM <imagem> Imagem base
MAINTAINER <Autor> Com pseudo tty
COPY <SRC> <DST> Copiar arquivo para dentro do container
RUN <comando> Executar um determinado comando dentro do container
CMD <processo> CMD padrão caso nada seja definido no "docker run"
ENV <Variável><Valor> Especificar variável de ambiente para o container
USER <usuário> O usuário que será usado para dar os comandos
WORKDIR <pasta> Qual pasta de trabalho (cd <pasta>)
Dockerfile
O arquivo é analisado do top a base do arquivo,
ou seja, se preocupe com a ordem as instruções
nesse documento!
FROM python:2.7
COPY . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python app.py
Fazendo o build
# mkdir imagem
# cd imagem
# vi Dockerfile
# docker build -t=<nome da imagem> .
Obs: No nome da imagem, lembre-se que a imagem
deve conter o nome do seu usuário antes do nome da
imagem. Exemplo: gomex/redis (meu usuário é
gomex).
# docker login
# docker push <nome da imagem>
Obs: No nome da imagem, lembre-se que a imagem
deve conter o nome do seu usuário antes do nome da
imagem. Exemplo: gomex/redis (meu usuário é
gomex).
Enviando pra nuvem
Exercício
1)Escolha uma imagem para ser estendida
2)Crie um Dockerfile com suas modificações
3)Faça build da imagem
4)Envie para nuvem
Perguntas?
gomex@riseup.net
@gomex
http://tinyurl.com/docker-br (Telegram)

Mais conteúdo relacionado

Mais procurados

TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containerstdc-globalcode
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoSérgio Lima
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerLuís Bianchin
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerStefan Teixeira
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
Cansei de trabalho manual, quero automatizar tudo!
Cansei de trabalho manual, quero automatizar tudo!Cansei de trabalho manual, quero automatizar tudo!
Cansei de trabalho manual, quero automatizar tudo!Rafael Gomes
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...tdc-globalcode
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker ContainersHugo Henley
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers tdc-globalcode
 
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 bolsoDiogo Lucas
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhatdc-globalcode
 
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...Renato Groff
 
Docker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeDocker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeRafael Gomes
 

Mais procurados (20)

TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre Docker
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de Docker
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Cansei de trabalho manual, quero automatizar tudo!
Cansei de trabalho manual, quero automatizar tudo!Cansei de trabalho manual, quero automatizar tudo!
Cansei de trabalho manual, quero automatizar tudo!
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
 
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 à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unha
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
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...
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
Docker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeDocker 1.12 - Swarm Mode
Docker 1.12 - Swarm Mode
 

Destaque

Gerenciamento de endereços ip com php ipam
Gerenciamento de endereços ip com php ipamGerenciamento de endereços ip com php ipam
Gerenciamento de endereços ip com php ipamPietro Scherer
 
Gestão e monitoramento de redes e dispositivos com Zabbix - FISL12
Gestão e monitoramento de redes e dispositivos com Zabbix - FISL12Gestão e monitoramento de redes e dispositivos com Zabbix - FISL12
Gestão e monitoramento de redes e dispositivos com Zabbix - FISL12Rafael Gomes
 
Monitoramento de Redes com Zabbix
Monitoramento de Redes com ZabbixMonitoramento de Redes com Zabbix
Monitoramento de Redes com ZabbixThiago Finardi
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comandoRafael Gomes
 
Monitoramento de Redes TCP/IP - Monografia
Monitoramento de Redes TCP/IP - MonografiaMonitoramento de Redes TCP/IP - Monografia
Monitoramento de Redes TCP/IP - MonografiaPietro Scherer
 
Projeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaProjeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaAécio Pires
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Jose Augusto Carvalho
 
Gerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramentaGerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramentaAécio Pires
 

Destaque (8)

Gerenciamento de endereços ip com php ipam
Gerenciamento de endereços ip com php ipamGerenciamento de endereços ip com php ipam
Gerenciamento de endereços ip com php ipam
 
Gestão e monitoramento de redes e dispositivos com Zabbix - FISL12
Gestão e monitoramento de redes e dispositivos com Zabbix - FISL12Gestão e monitoramento de redes e dispositivos com Zabbix - FISL12
Gestão e monitoramento de redes e dispositivos com Zabbix - FISL12
 
Monitoramento de Redes com Zabbix
Monitoramento de Redes com ZabbixMonitoramento de Redes com Zabbix
Monitoramento de Redes com Zabbix
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comando
 
Monitoramento de Redes TCP/IP - Monografia
Monitoramento de Redes TCP/IP - MonografiaMonitoramento de Redes TCP/IP - Monografia
Monitoramento de Redes TCP/IP - Monografia
 
Projeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaProjeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramenta
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2
 
Gerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramentaGerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramenta
 

Semelhante a Workshop Docker Introdução

Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Wallison Marra
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogCesar Augusto Nogueira
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldThiago Soares
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaMatheus Fidelis
 
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 usoTobias Sette
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
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 KubernetesRodrigo Cândido da Silva
 
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-2018Renato Groff
 

Semelhante a Workshop Docker Introdução (20)

Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Docker
DockerDocker
Docker
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Docker
DockerDocker
Docker
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Ambiente de desenvolvimento com docker e ruby on rails
Ambiente de desenvolvimento com  docker e ruby on railsAmbiente de desenvolvimento com  docker e ruby on rails
Ambiente de desenvolvimento com docker e ruby on rails
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorld
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
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
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
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 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
 

Workshop Docker Introdução

  • 2. Quem sou eu Rafael Gomes: ● Soteropolitano ● Apaixonado por compartilhamento ● Consultor na Thoughtworks ● Blog: techfree.com.br ● Twitter/github: @gomex ● Áreas de interesse/foco: ○ Cultura DevOps ○ Cloud ○ Entrega contínua ○ Automação de infraestrutura ○ Teste de infraestrutura ○ Monitoramento
  • 3. O que estou fazendo de relevante agora Livro: ● Pague quanto quiser, inclusive nada ● Não precisa saber nada de Docker ● Licenciado com Creative Commons http://tinyurl.com/docker-devel
  • 5. 5 Projeto Open source • 2B+ Download de Imagens • 2000+ Contribudores • 40K+ Estrelas no GitHub • 200K+ App Dockerizadas • 240 Meetups em 70 países • 95K Membros de Meetup Quem somos nos Comunidade Docker Docker Inc Provedor de container como serviço • Plataforma de integração para dev e ops • Suporte técnico comercial Patrocinado do projeto Docker • Principal patrocinador do projeto Docker • Suporta mantenedores do projeto
  • 6. Ecossistema do Docker Dev Tools Official Repositories Operating Systems Big Data Service Discovery Build / Continuous Integration Configuration Management Consulting &Training Management Storage Clustering & Scheduling Networking Infrastructure & Service Providers Storage Security Monitoring & Logging 6
  • 7. Básico do Docker Docker Image The basis of a Docker container Docker Container The standard unit in which the application service resides Docker Engine Creates, ships and runs Docker containers deployable on physical or virtual host locally, in a datacenter or cloud service provider Docker Registry On-premises registry for image storing and collaboration
  • 8. Applications are changing 8 Loosely Coupled Services Many Small Servers ~2000 Today Monolithic Big Servers Slow changing Rapidly updated
  • 9. O Desafio 9 Virtual machines Server Public Cloud Disaster Recovery Developer Laptop Server Cluster Data Center Static Website Web Front EndBackground Workers User DB Analytics DB Queue API Endpoint Development Test & QA Production Scale Out
  • 10. • Pacotes com binários e suas dependências • Softwares isolados uns dos outros • Container como formato padrão • Fácil portabilidade entre ambientes (GNU/Linux) • Permite padronização no processo de desenvolvimento Solução: Containers Docker 10 Container
  • 12. Na visão do desenvolvedor • Build uma vez e rode onde quiser • Um ambiente de execução portável, seguro e limpo para sua aplicação • Não se preocupe com dependências perdidas, pacotes e outros pontos de dores durante implantações futuras. Se rodou uma vez, rodará sempre • Execute cada aplicação isolado em seu container, dessa forma você pode executar várias versões de biblioteca e outras dependências para aplicação sem problemas • Teste automatizado, integração, empacotamento, tudo que você pode fazer com script. • Reduz/elimina preocupações com relação a diferentes plataformas GNU/Linux • Barato e sem penalidade de performance para implantar seus ambientes. Restart instantâneo de todo ambiente na velocidade da iniciação do serviço. Esse é o poder do Docker.
  • 13. Na visão do sysadmin •Configura uma vez, rode em qualquer lugar • Faça o ciclo de vida completo ser mais eficiente, consistente e replicável • Aumente a qualidade do código produzido pelos desenvolvedores • Elimine inconsistência entre desenvolvimento, teste, produção e ambiente do cliente • Melhoria significativa na velocidade e confiança do continuous deployment (CD) e continuous integration (CI). • Container são mais leves, impactam significativamente em problemas de performance, custo, implantação e portabilidade que normalmente são associados a VMs.
  • 14. Docker Toolbox Tudo que você precisa dentro de uma caixa • Toolbox inclue: – Kitematic – Docker CLI – Docker Machine – Docker Swarm – Docker Compose 14
  • 20. Comandos básicos Comando Explicação docker pull <nome da imagem> Baixar imagem docker images Listar as imagens locais docker inspect <id imagem ou container> Inspecionar informações docker run <nome da imagem> Iniciar um container docker ps Listas os containers docker exec <nome do container> <cmd> Executar comandos no container
  • 22. Exercicio Baixe a imagem do python # docker pull python
  • 24. Exercicio Verifique se imagem python existe localmente # docker images
  • 26. Exercicio Verifique qual comando padrão da imagem # docker inspect python Obs: Verifique o valor de "CMD"
  • 27. docker run <parâmetros> <imagem> <CMD> Parâmetro Explicação -d Execução em background --name Nomear o container -m Limitar o uso de memória RAM -c Balancear o uso de CPU -p Mapeamento de porta -v Mapeamento de volume -i Modo interativo -t Alocar pseudo tty
  • 28. Exercicio Execute a imagem python em modo interativo e acesse seu shell # docker run -it python
  • 29. Restrição de memória # docker run -m <memória> <imagem>
  • 30. Exercicio Execute o container com apenas 300MB de limite # docker run -it -m 300M python
  • 31. Balanceamento de CPU # docker run -c <peso> <imagem> Valor base 1024
  • 32. Exercicio Execute o container com metade do peso # docker run -it -c 512 python
  • 33. Mapeamento de porta # docker run -p portahost:portacontainer <imagem> Docker host Virtualbox Container 8080 80 192.168.99.100:80 Cliente
  • 34. Exercicio Efetue mapeamento da porta 80 para o container da imagem tutum/apache-php # docker run -it -p 80:80 tutum/apache-php Verifique o ip da sua máquina virtual e acesse a interface web
  • 35. Mapeamento de volume # docker run -v volhost:volcontainer <imagem> Docker host Virtualbox Container /Users/gomex/app Cliente /Users /app
  • 36. Exercicio Efetue mapeamento a sua pasta atual com a pasta /root do container python # docker run -it -v $PWD:/root python /bin/bash Crie um arquivo na pasta /root do container, depois saia do container e verifique se esse arquivo está no host
  • 37. docker volumes <parâmetros> Parâmetro Explicação Create <nome> Cria um volume Inspect <nome> Inspeciona o volume ls Lista os volumes existentes rm Remove o volume
  • 38. Crie um volume e efetue mapeamento com a pasta /root do container python # docker volume create --name teste # docker run -it -v teste:/root python /bin/bash Crie um arquivo na pasta /root do container, depois saia do container, crie um outro container com o mesmo volume e verifique se o arquivo existe # docker run -it -v teste:/root alpine /bin/sh Exercicio
  • 39. docker ps <parâmetros> Parâmetro Explicação -a Lista todos os containers, inclusive os desligados -l Lista os ultimos containers, inclusive os desligados -n Lista os últimos N containers, inclusive os desligados -q Lista apenas os ids dos containers
  • 40. Exercicio Verifique quais containers estão em execução no momento # docker ps
  • 41. Outros comandos docker Explicação stop <id do container> Desliga o container em execução start <id do container> Inicia o mesmo container que estava finalizado logs -f <id do container> Verifica o saida padrão do container attach <id do container> Conectar ao processo que está executando
  • 42. Exercicio Vamos testar cada comando # docker run -itd --name testepython python # docker stop testepython # docker start testepython # docker logs -f testepython # docker attach testepython
  • 43. docker exec <parâmetros> Parâmetro Explicação -i Modo interativo -t Com pseudo tty
  • 44. Exercicio Vamos iniciar um container em background e enviar comandos # docker run -itd --name testealpine alpine /bin/sh # docker exec -it testealpine ls /etc
  • 45. Exercicio 1) Crie uma conta na nuvem pública do docker (hub.docker.com) 2) Pesquise online sobre uma imagem que você tenha interesse 3) Leia README da imagem escolhida 4) Baixe a imagem escolhida 5) Execute a imagem escolhida com base nos dados do README Sugestão: https://hub.docker.com/r/berngp/docker-zabbix/ # docker run -d -P --name zabbix berngp/docker-zabbix
  • 47. Dockerfile É o documento que contém todos os comandos que o usuário poderia normalmente executar para criar um ambiente. Basicamente é uma descrição de procedimentos para criação do seu ambiente.
  • 48. Dockerfile Instruções Explicação FROM <imagem> Imagem base MAINTAINER <Autor> Com pseudo tty COPY <SRC> <DST> Copiar arquivo para dentro do container RUN <comando> Executar um determinado comando dentro do container CMD <processo> CMD padrão caso nada seja definido no "docker run" ENV <Variável><Valor> Especificar variável de ambiente para o container USER <usuário> O usuário que será usado para dar os comandos WORKDIR <pasta> Qual pasta de trabalho (cd <pasta>)
  • 49. Dockerfile O arquivo é analisado do top a base do arquivo, ou seja, se preocupe com a ordem as instruções nesse documento! FROM python:2.7 COPY . /code WORKDIR /code RUN pip install -r requirements.txt CMD python app.py
  • 50. Fazendo o build # mkdir imagem # cd imagem # vi Dockerfile # docker build -t=<nome da imagem> . Obs: No nome da imagem, lembre-se que a imagem deve conter o nome do seu usuário antes do nome da imagem. Exemplo: gomex/redis (meu usuário é gomex).
  • 51. # docker login # docker push <nome da imagem> Obs: No nome da imagem, lembre-se que a imagem deve conter o nome do seu usuário antes do nome da imagem. Exemplo: gomex/redis (meu usuário é gomex). Enviando pra nuvem
  • 52. Exercício 1)Escolha uma imagem para ser estendida 2)Crie um Dockerfile com suas modificações 3)Faça build da imagem 4)Envie para nuvem