O P O D E R D O D O C K E R
W E L L I N G T O N F S I L V A
Técnico Telecom,
programador,
DevOps,instrutor,
escritor, pai…
A G E N D A
• O que é Docker?
• Como funciona?
• Win vs Mac vs
Linux
• Exemplos de uso
• Cases GFG
• Adoção
O Q U E É D O C K E R ?
O Q U E É D O C K E R ?
O Q U E É D O C K E R ?
• Sistemas de
Containers Linux
O Q U E É D O C K E R ?
• Sistemas de
Containers Linux
• Leve e rápido
O Q U E É D O C K E R ?
• Sistemas de
Containers Linux
• Leve e rápido
• Open Source
O Q U E É D O C K E R ?
• Sistemas de
Containers Linux
• Leve e rápido
• Open Source
• Diversas
ferramentas de
cluster e
orquestração
O Q U E É D O C K E R ?
• Sistemas de
Containers Linux
• Leve e rápido
• Open Source
• Diversas
ferramentas de
cluster e
orquestração
• Facilita
microservice
O Q U E É D O C K E R ?
• Sistemas de
Containers Linux
• Leve e rápido
• Open Source
• Diversas
ferramentas de
cluster e
orquestração
• Facilita
microservice
• Facilita emprego
do 12 factor
O Q U E É D O C K E R ?
• Sistemas de
Containers Linux
• Leve e rápido
• Open Source
• Diversas
ferramentas de
cluster e
orquestração
• Facilita
microservice
• Facilita emprego
do 12 factor
• Melhora a
distribuição de
recursos
O Q U E É D O C K E R ?
C O M O F U N C I O N A ?
C O M O F U N C I O N A ?
C O M O F U N C I O N A ?
W I N D O W S V S M A C V S
L I N U X
C O M O F U N C I O N A ?
C O M O F U N C I O N A ?
C O M O F U N C I O N A ?
E X E M P L O S D E U S O
N G I N X W E B S E R V E R
D E M O
C O M P O S E C O M S E R V I C E S
D E M O
A P L I C A Ç Õ E S C O M G U I
D E M O
D O C K E R C R A F T
D E M O
C A S E S
• Resolveu problema de disputa de
ambiente de homologação
T I C K E T S E M Q & A
C A S E S
• Resolveu problema de disputa de
ambiente de homologação
• Instalado git no servidor
T I C K E T S E M Q & A
C A S E S
• Resolveu problema de disputa de
ambiente de homologação
• Instalado git no servidor
• Script de provision no hook post-
update
T I C K E T S E M Q & A
C A S E S
O script:
• Levantava os sistemas em container
com docker-compose
T I C K E T S E M Q & A
C A S E S
O script:
• Levantava os sistemas em container
com docker-compose
• Colocava o código do branch enviado
T I C K E T S E M Q & A
C A S E S
O script:
• Levantava os sistemas em container
com docker-compose
• Colocava o código do branch enviado
• Montava as urls com o nº do ticket
(http://gfg-666.front.qa.url)
T I C K E T S E M Q & A
C A S E S
Para os devs:
• Adicionava o server como remote (git
remote add qa git@git.qa…)
T I C K E T S E M Q & A
C A S E S
Para os devs:
• Adicionava o server como remote (git
remote add qa git@git.qa…)
• Para testar o branch: git push qa
gfg-666
T I C K E T S E M Q & A
C A S E S
Para os devs:
• Adicionava o server como remote (git
remote add qa git@git.qa…)
• Para testar o branch: git push qa
gfg-666
• Para remover: git push qa :gfg-666
T I C K E T S E M Q & A
C A S E S
• Deploy era focado na loja (PHP)
M Á Q U I N A D E D E P L O Y
C A S E S
• Deploy era focado na loja (PHP)
• Outros serviços em outras linguagens
surgiram (python, java)
M Á Q U I N A D E D E P L O Y
C A S E S
• Deploy era focado na loja (PHP)
• Outros serviços em outras linguagens
surgiram (python, java)
• Todas as dependências tinham que ser
instaladas na máquina
M Á Q U I N A D E D E P L O Y
C A S E S
• Nova máquina apenas com Docker
M Á Q U I N A D E D E P L O Y
C A S E S
• Nova máquina apenas com Docker
• Ant com mesmo target para todos
projetos (ant build, ant deploy)
M Á Q U I N A D E D E P L O Y
C A S E S
• Nova máquina apenas com Docker
• Ant com mesmo target para todos
projetos (ant build, ant deploy)
• Cada projeto implementa como será o
build (java: unit test + compile +
geração de .war / python e php:
composer ou pip + unit test +
geração de .tar.gz)
M Á Q U I N A D E D E P L O Y
C A S E S
• O próprio script ant se necessário
sobe containers com banco (MySQL e
Postgres) e ou cache (Memcached/
Redis) para os testes de acordo com
o sistema
M Á Q U I N A D E D E P L O Y
C A S E S
• O próprio script ant se necessário
sobe containers com banco (MySQL e
Postgres) e ou cache (Memcached/Redis)
para os testes de acordo com o sistema
• Cada projeto implementa como será o
deploy (java: ajuste de config e troca
do .war / python e php: ajuste de
configs + unit test + geração
de .tar.gz)
M Á Q U I N A D E D E P L O Y
C A S E S
• Scripts Python montam o inventário
(dinâmico, algumas máquinas na AWS)
M Á Q U I N A D E D E P L O Y
C A S E S
• Scripts Python montam o inventário
(dinâmico, algumas máquinas na AWS)
• Playbooks Ansible fazem o deploy nas
instâncias, geram novas imagens e
atualiza a configuração do autoscale
M Á Q U I N A D E D E P L O Y
C A S E S
E S T U D O D A T A D O G
https://www.datadoghq.com/docker-adoption/
• aumento de 30% entre maio de 2015 e
maio de 2016
E S T U D O D A T A D O G
E S T U D O
• aumento de 30% entre maio de 2015 e
maio de 2016
• maiores empresas (+500 hosts),
adoção maior
E S T U D O D A T A D O G
E S T U D O
• aumento de 30% entre maio de 2015 e
maio de 2016
• maiores empresas (+500 hosts),
adoção maior
• 2/3 dos que testam adotam
E S T U D O D A T A D O G
E S T U D O
• aumento de 30% entre maio de 2015 e
maio de 2016
• maiores empresas (+500 hosts),
adoção maior
• 2/3 dos que testam adotam
• quantidade de container quintuplica
após adoção
E S T U D O D A T A D O G
E S T U D O
• Em média 5 containers por host
E S T U D O D A T A D O G
E S T U D O
• Em média 5 containers por host
• VMs são 6 vezes mais longevas
E S T U D O D A T A D O G
E S T U D O
• Em média 5 containers por host
• VMs são 6 vezes mais longevas
• Imgs mais usadas: Registry, NGINX,
Redis, Elasticsearch, MySQL,
Logspout, Quay, etcd, Postgres,
CAdvisor
E S T U D O D A T A D O G
E S T U D O
• https://telegram.me/dockerbr
• http://docker-br.herokuapp.com/
• http://bit.ly/curso-docker
M A I S S O B R E D O C K E R
O B R I G A D O

O poder do Docker (7 Masters)

  • 1.
    O P OD E R D O D O C K E R
  • 2.
    W E LL I N G T O N F S I L V A Técnico Telecom, programador, DevOps,instrutor, escritor, pai…
  • 3.
    A G EN D A • O que é Docker? • Como funciona? • Win vs Mac vs Linux • Exemplos de uso • Cases GFG • Adoção
  • 4.
    O Q UE É D O C K E R ?
  • 5.
    O Q UE É D O C K E R ?
  • 6.
    O Q UE É D O C K E R ?
  • 7.
    • Sistemas de ContainersLinux O Q U E É D O C K E R ?
  • 8.
    • Sistemas de ContainersLinux • Leve e rápido O Q U E É D O C K E R ?
  • 9.
    • Sistemas de ContainersLinux • Leve e rápido • Open Source O Q U E É D O C K E R ?
  • 10.
    • Sistemas de ContainersLinux • Leve e rápido • Open Source • Diversas ferramentas de cluster e orquestração O Q U E É D O C K E R ?
  • 11.
    • Sistemas de ContainersLinux • Leve e rápido • Open Source • Diversas ferramentas de cluster e orquestração • Facilita microservice O Q U E É D O C K E R ?
  • 12.
    • Sistemas de ContainersLinux • Leve e rápido • Open Source • Diversas ferramentas de cluster e orquestração • Facilita microservice • Facilita emprego do 12 factor O Q U E É D O C K E R ?
  • 13.
    • Sistemas de ContainersLinux • Leve e rápido • Open Source • Diversas ferramentas de cluster e orquestração • Facilita microservice • Facilita emprego do 12 factor • Melhora a distribuição de recursos O Q U E É D O C K E R ?
  • 14.
    C O MO F U N C I O N A ?
  • 15.
    C O MO F U N C I O N A ?
  • 16.
    C O MO F U N C I O N A ?
  • 17.
    W I ND O W S V S M A C V S L I N U X
  • 18.
    C O MO F U N C I O N A ?
  • 19.
    C O MO F U N C I O N A ?
  • 20.
    C O MO F U N C I O N A ?
  • 21.
    E X EM P L O S D E U S O
  • 22.
    N G IN X W E B S E R V E R D E M O
  • 23.
    C O MP O S E C O M S E R V I C E S D E M O
  • 24.
    A P LI C A Ç Õ E S C O M G U I D E M O
  • 25.
    D O CK E R C R A F T D E M O
  • 26.
    C A SE S
  • 27.
    • Resolveu problemade disputa de ambiente de homologação T I C K E T S E M Q & A C A S E S
  • 28.
    • Resolveu problemade disputa de ambiente de homologação • Instalado git no servidor T I C K E T S E M Q & A C A S E S
  • 29.
    • Resolveu problemade disputa de ambiente de homologação • Instalado git no servidor • Script de provision no hook post- update T I C K E T S E M Q & A C A S E S
  • 30.
    O script: • Levantavaos sistemas em container com docker-compose T I C K E T S E M Q & A C A S E S
  • 31.
    O script: • Levantavaos sistemas em container com docker-compose • Colocava o código do branch enviado T I C K E T S E M Q & A C A S E S
  • 32.
    O script: • Levantavaos sistemas em container com docker-compose • Colocava o código do branch enviado • Montava as urls com o nº do ticket (http://gfg-666.front.qa.url) T I C K E T S E M Q & A C A S E S
  • 33.
    Para os devs: •Adicionava o server como remote (git remote add qa git@git.qa…) T I C K E T S E M Q & A C A S E S
  • 34.
    Para os devs: •Adicionava o server como remote (git remote add qa git@git.qa…) • Para testar o branch: git push qa gfg-666 T I C K E T S E M Q & A C A S E S
  • 35.
    Para os devs: •Adicionava o server como remote (git remote add qa git@git.qa…) • Para testar o branch: git push qa gfg-666 • Para remover: git push qa :gfg-666 T I C K E T S E M Q & A C A S E S
  • 36.
    • Deploy erafocado na loja (PHP) M Á Q U I N A D E D E P L O Y C A S E S
  • 37.
    • Deploy erafocado na loja (PHP) • Outros serviços em outras linguagens surgiram (python, java) M Á Q U I N A D E D E P L O Y C A S E S
  • 38.
    • Deploy erafocado na loja (PHP) • Outros serviços em outras linguagens surgiram (python, java) • Todas as dependências tinham que ser instaladas na máquina M Á Q U I N A D E D E P L O Y C A S E S
  • 39.
    • Nova máquinaapenas com Docker M Á Q U I N A D E D E P L O Y C A S E S
  • 40.
    • Nova máquinaapenas com Docker • Ant com mesmo target para todos projetos (ant build, ant deploy) M Á Q U I N A D E D E P L O Y C A S E S
  • 41.
    • Nova máquinaapenas com Docker • Ant com mesmo target para todos projetos (ant build, ant deploy) • Cada projeto implementa como será o build (java: unit test + compile + geração de .war / python e php: composer ou pip + unit test + geração de .tar.gz) M Á Q U I N A D E D E P L O Y C A S E S
  • 42.
    • O próprioscript ant se necessário sobe containers com banco (MySQL e Postgres) e ou cache (Memcached/ Redis) para os testes de acordo com o sistema M Á Q U I N A D E D E P L O Y C A S E S
  • 43.
    • O próprioscript ant se necessário sobe containers com banco (MySQL e Postgres) e ou cache (Memcached/Redis) para os testes de acordo com o sistema • Cada projeto implementa como será o deploy (java: ajuste de config e troca do .war / python e php: ajuste de configs + unit test + geração de .tar.gz) M Á Q U I N A D E D E P L O Y C A S E S
  • 44.
    • Scripts Pythonmontam o inventário (dinâmico, algumas máquinas na AWS) M Á Q U I N A D E D E P L O Y C A S E S
  • 45.
    • Scripts Pythonmontam o inventário (dinâmico, algumas máquinas na AWS) • Playbooks Ansible fazem o deploy nas instâncias, geram novas imagens e atualiza a configuração do autoscale M Á Q U I N A D E D E P L O Y C A S E S
  • 46.
    E S TU D O D A T A D O G https://www.datadoghq.com/docker-adoption/
  • 47.
    • aumento de30% entre maio de 2015 e maio de 2016 E S T U D O D A T A D O G E S T U D O
  • 48.
    • aumento de30% entre maio de 2015 e maio de 2016 • maiores empresas (+500 hosts), adoção maior E S T U D O D A T A D O G E S T U D O
  • 49.
    • aumento de30% entre maio de 2015 e maio de 2016 • maiores empresas (+500 hosts), adoção maior • 2/3 dos que testam adotam E S T U D O D A T A D O G E S T U D O
  • 50.
    • aumento de30% entre maio de 2015 e maio de 2016 • maiores empresas (+500 hosts), adoção maior • 2/3 dos que testam adotam • quantidade de container quintuplica após adoção E S T U D O D A T A D O G E S T U D O
  • 51.
    • Em média5 containers por host E S T U D O D A T A D O G E S T U D O
  • 52.
    • Em média5 containers por host • VMs são 6 vezes mais longevas E S T U D O D A T A D O G E S T U D O
  • 53.
    • Em média5 containers por host • VMs são 6 vezes mais longevas • Imgs mais usadas: Registry, NGINX, Redis, Elasticsearch, MySQL, Logspout, Quay, etcd, Postgres, CAdvisor E S T U D O D A T A D O G E S T U D O
  • 54.
    • https://telegram.me/dockerbr • http://docker-br.herokuapp.com/ •http://bit.ly/curso-docker M A I S S O B R E D O C K E R O B R I G A D O