SlideShare uma empresa Scribd logo
DOCKER PARA
MAIORES
Matheus Fidelis - @fidelissauro
$WHOAMI
Matheus Fidelis
Desenvolvedor Web PHP & DevOps
Twitter: @fidelissauro
Superlogica - Plataforma
Email: msfidelis01@gmail.com
Blog: http://nanoshots.com.br
2
CRONOGRAMA DE
BORDO3
Docker via Cli
Dockerfiles
Docker
Compose
O QUE É DOCKER?
4
O QUE É DOCKER?
▹ Docker é um empacotador de ambientes.
▹ Te permite criar ambientes complexos inteiros, suprir
de dependências, padronizar máquinas e escalar de
maneira rápida.
▹ Facilita a orquestração de máquinas e simular um
ambiente distribuído.
▹ Queijo está para goiabada assim como Docker está para
Cloud.
5
O QUE É DOCKER?
▹ Não inventou a roda…
▹ Gerencia Containers LXC
▹ Produto Open Source criado como uma Engine de
Deploy por uma Startup chamada dotCloud.
▹ Todo mundo quis usar, e curtiu…
6
CONTAINER X VM?7
”
“Nada se cria, tudo se copia, e
sempre de um jeito novo”
▹Lars Herrmann
8
POR QUE DOCKER?
9
POR QUE DOCKER?
▹ Facilidade de Empacotar sistemas inteiros.
▹ Facilidade de criação de Clusters e Servidores
▹ Resolução de dependências.
▹ Build performático
▹ MUITO rápido
▹ Escalável, elástico e “clusterizável”
▹ Feito para Cloud e API’s
▹ Não depende de hardware ou sistema
▹ Replicação quase trivial da produção para a máquina do Dev
10
11
POR QUE
DOCKER?
12
▹ Independe de Linguagem
▹ Independe de Framework
▹ Independe de S.O.
▹ Conflitos de versão? Puff…
▹ Adapte para o que quiser
▹ O mundo é seu!
QUALQUER NUVEM13
USE QUALQUER COISA14
ONDE QUEREMOS
CHEGAR COM
DOCKER?
15
CI & CD
CONTINUOUS INTEGRATION AND CONTINUOUS DELIVERY
FAST SCALING
INFRAESTRUTURA ÁGIL
16
ALGUNS CASES NA SUPERLOGICA
(Até o momento)
17
Graylog
▹Parsing de Logs do Cloud
▹Trata uma média de 4 GB
de Logs diários pra
plataforma
▹Usamos MongoDB,
Elastic Search e Java.
18
Hosting API
▹API de Hospedagem do novo
recurso de Sites Institucionais da
Superlogica
▹PHP 7 FPM, Bash Script, Apache,
MySQL e Varnish
19
Cloud Cache API
▹API de Cacheamento de
requisições do Cloud para os RDS
da AWS.
▹PHP 7, Memcache, Modularização
Dev/Prod, Silex
▹NGINX e Load Balance.
▹Alta concorrência.
20
1
A estrada até aqui...
DOCKER ON CLI
(VULGO ORQUESTRAÇÃO
V1D4 L0K4)
22
UM É POUCO, DOIS É BOM
E TRÊS É DEMAIS
23
SUBINDO UMA NA MÃO24
matheus@fidelis~$ docker run -it ubuntu:latest /bin/bash
root@123129380 apt-get update; apt-get install php7.0
apache2
(CTRL + D)
matheus@fidelis~$ docker ps
matheus@fidelis~$ docker commit 123129380
msfidelis/apache
ORQUESTRAÇÃO BÁSICA
(UMA PALAVRINHA SOBRE RECEITAS DE BOLO)
25
DOCKERFILE
(A RECEITA DO BOLO, VULGO
CONTAINER)
26
O QUE É UMA DOCKERFILE
▹Dockerfiles são basicamente arquivos de configuração
que vão modelar o Container Linux a sua necessidade.
▹Uma Dockerfile segue um padrão de marcação que o
Docker nativo vai seguir para executar o Build dos
containers.
27
ESTRUTURA DE UMA DOCKERFILE
28
DOCKER BUILD
29
# docker build . -t seunome/nomedaimagem:versao
# docker build . -t superlogica/aulaapache:latest
# docker images
BUILD DE UMA DOCKERFILE
30
BUILD DE UMA DOCKERFILE
31
OPÇÕES DA DOCKERFILE
▹ ADD - Adiciona qualquer arquivo (compactado) para dentro do container
▹ COPY - Copia qualquer arquivo para dentro do container
▹ RUN - Executa qualquer comando a uma camada e commita no container.
▹ CMD - Executa um comando quando o container é iniciado
▹ ENTRYPOINT - Permite rodar um comando na inicialização com Ciclo de vida.
▹ LABEL - Permite adicionar Metadados ao container.
▹ ENV - Cria variáveis de ambiente dentro do Container.
▹ EXPOSE - Informa quais portas o container irá ouvir.
▹ USER - Informa qual usuário irá executar as tarefas do container. Default: root.
▹ VOLUME - Faz a criação dos pontos de montagem do container.
▹ WORKDIR - Muda o diretório / para o diretório especificado.
32
AINDA NÃO TA LEGAL…
MUITO LONGE DO CI/CD
33
Ainda existe muito processo manual pra construir e
subir containers. Não nos livramos da orquestração
Vid4 L0k4.
DIGA NÃO AO GO-HORSE
(Piadinha infame)
34
VOLTAMOS AO MAR DE DEPENDÊNCIAS
E AO CLIENT VERBOSO.
▹No mundo real, nosso sistema depende de outras coisas…
▹Quando você precisa subir suas dependências.
▹Seu apache, que depende do seu PHP-FPM, que depende
do seu MySQL e do seu Memcache, que mapeia volumes,
que necessita de configurações específicas,
▹e tudo isso, precisa ser startado em ordem pra funcionar
35
VOLTAMOS AO MAR DE DEPENDÊNCIAS
E AO CLIENT VERBOSO.
docker run -t --name mysql mysql:5.7 -v ./data:/var/lib/mysql -p 3306:3306
docker run -t --name apache apache:latest -v ./code:/var/www/html -p 80:80 -v
./confs/apache2.conf:/etc/apache2/apache2.conf -v
./confs/vhost.conf:/etc/apache2/sites-enabled/vhost.conf
docker run -t --name cache memcache:alpine -p 11211:11211
docker run -t --name php php7-fpm:lastest -v ./code:/var/www/html 
--link mysql --link apache --link memcache -p 9000:9000
36
VOLTAMOS AO MAR DE DEPENDÊNCIAS
E AO CLIENT VERBOSO.
▹ MUITA coisa pra digitar
▹ Voltamos ao Dependency Hell, porém com containers, de fato não
resolvemos o problema.
▹ Muita coisa pra digitar === muita chance de errar.
▹ NÃO, absolutamente você NÃO será inteligente de isolar isso num
arquivo SH. (Espertinho, não seja V1D4 L0K4).
37
ORQUESTRAÇÃO DE GENTE GRANDE
(UMA SINFONIA ENTRE SISTEMAS)
38
DOCKER COMPOSE39
▹ Veio do projeto FIG, que devido ao sucesso na comunidade foi
adquirido e integrado ao Docker como Docker-Compose.
▹ Te permite baixar e buildar images, mapear volumes, propriedades,
variáveis de ambiente de TODO o seu sistema a partir de um único
arquivo ‘maestro’.
▹ Feito para aplicações multi-containers
▹ Você pode referenciar seus serviços, Dockerfiles, arquivos de
configuração e como eles vão se comportar durante o build.
▹ Resolução de ordem de dependência
▹ Facilita escalar. Sério.
▹ Torna o chato, legal de novo :)
40
DOCKER-COMPOSE.YML
COMANDOS DO DOCKER-
COMPOSE...
BUILD
Builda o conteúdo do arquivo
docker-compose.yml
Para buildar sem cache, usamos --
no-cache
UP
Sobe o conteúdo do arquivo
docker-compose.yml
STOP
Para todos os containers filhos do
docker-compose.yml do projeto
SCALE
Escala a aplicação selecionada
scale api=3
RM & KILL
Remove os containers parados do
projeto. Use o -f para force.
Mata todos os containers do
projeto
LOGS
Mostra os logs do projeto atual.
Toda a saída padrão de execução.
41
DICAS SOBRE
ORQUESTRAÇÃO
42
Vulgo coisas que eu gostaria que alguém tivesse me
dito sobre o Docker...
DICAS MAROTAS43
▹ Alpine Linux - Uma distribuição Linux Minimalista que serve pra
trabalhos braçais e rápidos, como Cache, containers services que
sobem, executam algo e morrem (ex: dump, restore, compose e etc).
▹ Modularização de ambiente Dev & Test e Prod via compose.
Referenciamos um docker-compose alternativo com o -f
Ex: docker-compose -f docker-compose-dev.yml ou -f docker-
compose-prod.yml
DICAS MAROTAS44
▹ Você pode containerizar serviços simples, como um Cron, um ‘npm
install’, um ‘composer update’, um restore do banco de dados, um
Webhook, uma chamada Curl e etc.
▹ Usar o HaProxy para construir um Load Balance entre containers.
▹ Ambientes Containerizados funcionam muito bem para comportar e
escalar API’s REST.
▹ Sempre limpe seus containers após um yum ou apt
(Ex: apt-get autoremove; apt-get clean; apt-get autoclean)
DOCKER
É 90%
MINDSET
E 10%
TECNICA
45
E NO PRÓXIMO CAPÍTULO...
46
47 E NO PRÓXIMO CAPÍTULO
▹ Introdução ao Google Kubernetes
▹ Instrodução ao Docker Swarm
▹ Construir e Escalar uma API REST completa usando PHP
7 + NGINX + SILEX + MEMCACHE + MySQL + MongoDB
▹ Montar um ambiente completo de Teste, CI & CD, Build e
Deploy com integrações do Docker como Jenkins e GIT
48
OBRIGADO!
https://github.com/msfidelis/DockerParaMaioresSuperlogica/

Mais conteúdo relacionado

Mais procurados

5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
Amazon Web Services LATAM
 
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
Luís Bianchin
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
MOSS Open Source Services
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
Wellington Silva
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
Michael Castillo Granados
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
Hugo Henley
 
Conheça o Docker
Conheça o DockerConheça o Docker
Conheça o Docker
Uira Ribeiro
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
Fernando Ike
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
Sé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 Docker
Bruno Ricardo Siqueira
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
WebSix
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e Compose
Roberto Hashioka
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
Marcelo Fleury
 
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
Tobias Sette
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
Rodrigo Emereciano
 
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
Stefan Teixeira
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
Leonardo de Oliveira
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
Mauricio Martins
 
Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
Marcelo Santos
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
Marcio Trindade
 

Mais procurados (20)

5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
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
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
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
 
Conheça o Docker
Conheça o DockerConheça o Docker
Conheça o Docker
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
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
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e Compose
 
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
 
O que é Docker?
O que é Docker?O que é Docker?
O que é 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
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 

Destaque

Certificado de palestra proferida: "O Inimigo Interno"
Certificado de palestra proferida: "O Inimigo Interno"Certificado de palestra proferida: "O Inimigo Interno"
Certificado de palestra proferida: "O Inimigo Interno"
Ricardo Maganhati Junior
 
O Fantástico Mundo de Git
O Fantástico Mundo de GitO Fantástico Mundo de Git
O Fantástico Mundo de Git
Matheus Fidelis
 
Slide pronto
Slide prontoSlide pronto
Slide pronto
Bia Bernardino
 
Slides prontos
Slides prontosSlides prontos
Slides prontos
niceoliveira
 
Slides para Apresentação acadêmica
Slides para Apresentação acadêmicaSlides para Apresentação acadêmica
Slides para Apresentação acadêmica
RafaelBorges3
 
Apresentação de slides pronto
Apresentação de slides prontoApresentação de slides pronto
Apresentação de slides pronto
candidacbertao
 

Destaque (6)

Certificado de palestra proferida: "O Inimigo Interno"
Certificado de palestra proferida: "O Inimigo Interno"Certificado de palestra proferida: "O Inimigo Interno"
Certificado de palestra proferida: "O Inimigo Interno"
 
O Fantástico Mundo de Git
O Fantástico Mundo de GitO Fantástico Mundo de Git
O Fantástico Mundo de Git
 
Slide pronto
Slide prontoSlide pronto
Slide pronto
 
Slides prontos
Slides prontosSlides prontos
Slides prontos
 
Slides para Apresentação acadêmica
Slides para Apresentação acadêmicaSlides para Apresentação acadêmica
Slides para Apresentação acadêmica
 
Apresentação de slides pronto
Apresentação de slides prontoApresentação de slides pronto
Apresentação de slides pronto
 

Semelhante a Docker para maiores

Oficina docker
Oficina dockerOficina docker
Oficina docker
Morvana Bonin
 
Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)
Wellington Silva
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
dadalt1
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
Evandro Silvestre
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
Francisco Gonçalves
 
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
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
David Ruiz
 
Docker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarDocker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistar
Vinícius Feitosa
 
Docker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeDocker 1.12 - Swarm Mode
Docker 1.12 - Swarm Mode
Rafael Gomes
 
Docker
DockerDocker
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
Renato Lucena
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
Benicio Ávila
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
Eustaquio Guimaraes mendesbsb
 
Beers & Bytes - O Futuro da virtualização
Beers & Bytes - O Futuro da virtualizaçãoBeers & Bytes - O Futuro da virtualização
Beers & Bytes - O Futuro da virtualização
Carlos Smaniotto
 
O que é o Docker afinal? (Workshop Novatec)
O que é o Docker afinal? (Workshop Novatec)O que é o Docker afinal? (Workshop Novatec)
O que é o Docker afinal? (Workshop Novatec)
Wellington Silva
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
TechCobli
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
George Moura
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
Cesar Augusto Nogueira
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
Cesar Augusto Nogueira
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linha
matheuscmpm
 

Semelhante a Docker para maiores (20)

Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Docker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarDocker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistar
 
Docker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeDocker 1.12 - Swarm Mode
Docker 1.12 - Swarm Mode
 
Docker
DockerDocker
Docker
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de 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
 
Beers & Bytes - O Futuro da virtualização
Beers & Bytes - O Futuro da virtualizaçãoBeers & Bytes - O Futuro da virtualização
Beers & Bytes - O Futuro da virtualização
 
O que é o Docker afinal? (Workshop Novatec)
O que é o Docker afinal? (Workshop Novatec)O que é o Docker afinal? (Workshop Novatec)
O que é o Docker afinal? (Workshop Novatec)
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 
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
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linha
 

Docker para maiores

  • 2. $WHOAMI Matheus Fidelis Desenvolvedor Web PHP & DevOps Twitter: @fidelissauro Superlogica - Plataforma Email: msfidelis01@gmail.com Blog: http://nanoshots.com.br 2
  • 3. CRONOGRAMA DE BORDO3 Docker via Cli Dockerfiles Docker Compose
  • 4. O QUE É DOCKER? 4
  • 5. O QUE É DOCKER? ▹ Docker é um empacotador de ambientes. ▹ Te permite criar ambientes complexos inteiros, suprir de dependências, padronizar máquinas e escalar de maneira rápida. ▹ Facilita a orquestração de máquinas e simular um ambiente distribuído. ▹ Queijo está para goiabada assim como Docker está para Cloud. 5
  • 6. O QUE É DOCKER? ▹ Não inventou a roda… ▹ Gerencia Containers LXC ▹ Produto Open Source criado como uma Engine de Deploy por uma Startup chamada dotCloud. ▹ Todo mundo quis usar, e curtiu… 6
  • 8. ” “Nada se cria, tudo se copia, e sempre de um jeito novo” ▹Lars Herrmann 8
  • 10. POR QUE DOCKER? ▹ Facilidade de Empacotar sistemas inteiros. ▹ Facilidade de criação de Clusters e Servidores ▹ Resolução de dependências. ▹ Build performático ▹ MUITO rápido ▹ Escalável, elástico e “clusterizável” ▹ Feito para Cloud e API’s ▹ Não depende de hardware ou sistema ▹ Replicação quase trivial da produção para a máquina do Dev 10
  • 11. 11
  • 12. POR QUE DOCKER? 12 ▹ Independe de Linguagem ▹ Independe de Framework ▹ Independe de S.O. ▹ Conflitos de versão? Puff… ▹ Adapte para o que quiser ▹ O mundo é seu!
  • 16. CI & CD CONTINUOUS INTEGRATION AND CONTINUOUS DELIVERY FAST SCALING INFRAESTRUTURA ÁGIL 16
  • 17. ALGUNS CASES NA SUPERLOGICA (Até o momento) 17
  • 18. Graylog ▹Parsing de Logs do Cloud ▹Trata uma média de 4 GB de Logs diários pra plataforma ▹Usamos MongoDB, Elastic Search e Java. 18
  • 19. Hosting API ▹API de Hospedagem do novo recurso de Sites Institucionais da Superlogica ▹PHP 7 FPM, Bash Script, Apache, MySQL e Varnish 19
  • 20. Cloud Cache API ▹API de Cacheamento de requisições do Cloud para os RDS da AWS. ▹PHP 7, Memcache, Modularização Dev/Prod, Silex ▹NGINX e Load Balance. ▹Alta concorrência. 20
  • 21. 1 A estrada até aqui...
  • 22. DOCKER ON CLI (VULGO ORQUESTRAÇÃO V1D4 L0K4) 22
  • 23. UM É POUCO, DOIS É BOM E TRÊS É DEMAIS 23
  • 24. SUBINDO UMA NA MÃO24 matheus@fidelis~$ docker run -it ubuntu:latest /bin/bash root@123129380 apt-get update; apt-get install php7.0 apache2 (CTRL + D) matheus@fidelis~$ docker ps matheus@fidelis~$ docker commit 123129380 msfidelis/apache
  • 25. ORQUESTRAÇÃO BÁSICA (UMA PALAVRINHA SOBRE RECEITAS DE BOLO) 25
  • 26. DOCKERFILE (A RECEITA DO BOLO, VULGO CONTAINER) 26
  • 27. O QUE É UMA DOCKERFILE ▹Dockerfiles são basicamente arquivos de configuração que vão modelar o Container Linux a sua necessidade. ▹Uma Dockerfile segue um padrão de marcação que o Docker nativo vai seguir para executar o Build dos containers. 27
  • 28. ESTRUTURA DE UMA DOCKERFILE 28
  • 29. DOCKER BUILD 29 # docker build . -t seunome/nomedaimagem:versao # docker build . -t superlogica/aulaapache:latest # docker images
  • 30. BUILD DE UMA DOCKERFILE 30
  • 31. BUILD DE UMA DOCKERFILE 31
  • 32. OPÇÕES DA DOCKERFILE ▹ ADD - Adiciona qualquer arquivo (compactado) para dentro do container ▹ COPY - Copia qualquer arquivo para dentro do container ▹ RUN - Executa qualquer comando a uma camada e commita no container. ▹ CMD - Executa um comando quando o container é iniciado ▹ ENTRYPOINT - Permite rodar um comando na inicialização com Ciclo de vida. ▹ LABEL - Permite adicionar Metadados ao container. ▹ ENV - Cria variáveis de ambiente dentro do Container. ▹ EXPOSE - Informa quais portas o container irá ouvir. ▹ USER - Informa qual usuário irá executar as tarefas do container. Default: root. ▹ VOLUME - Faz a criação dos pontos de montagem do container. ▹ WORKDIR - Muda o diretório / para o diretório especificado. 32
  • 33. AINDA NÃO TA LEGAL… MUITO LONGE DO CI/CD 33 Ainda existe muito processo manual pra construir e subir containers. Não nos livramos da orquestração Vid4 L0k4.
  • 34. DIGA NÃO AO GO-HORSE (Piadinha infame) 34
  • 35. VOLTAMOS AO MAR DE DEPENDÊNCIAS E AO CLIENT VERBOSO. ▹No mundo real, nosso sistema depende de outras coisas… ▹Quando você precisa subir suas dependências. ▹Seu apache, que depende do seu PHP-FPM, que depende do seu MySQL e do seu Memcache, que mapeia volumes, que necessita de configurações específicas, ▹e tudo isso, precisa ser startado em ordem pra funcionar 35
  • 36. VOLTAMOS AO MAR DE DEPENDÊNCIAS E AO CLIENT VERBOSO. docker run -t --name mysql mysql:5.7 -v ./data:/var/lib/mysql -p 3306:3306 docker run -t --name apache apache:latest -v ./code:/var/www/html -p 80:80 -v ./confs/apache2.conf:/etc/apache2/apache2.conf -v ./confs/vhost.conf:/etc/apache2/sites-enabled/vhost.conf docker run -t --name cache memcache:alpine -p 11211:11211 docker run -t --name php php7-fpm:lastest -v ./code:/var/www/html --link mysql --link apache --link memcache -p 9000:9000 36
  • 37. VOLTAMOS AO MAR DE DEPENDÊNCIAS E AO CLIENT VERBOSO. ▹ MUITA coisa pra digitar ▹ Voltamos ao Dependency Hell, porém com containers, de fato não resolvemos o problema. ▹ Muita coisa pra digitar === muita chance de errar. ▹ NÃO, absolutamente você NÃO será inteligente de isolar isso num arquivo SH. (Espertinho, não seja V1D4 L0K4). 37
  • 38. ORQUESTRAÇÃO DE GENTE GRANDE (UMA SINFONIA ENTRE SISTEMAS) 38
  • 39. DOCKER COMPOSE39 ▹ Veio do projeto FIG, que devido ao sucesso na comunidade foi adquirido e integrado ao Docker como Docker-Compose. ▹ Te permite baixar e buildar images, mapear volumes, propriedades, variáveis de ambiente de TODO o seu sistema a partir de um único arquivo ‘maestro’. ▹ Feito para aplicações multi-containers ▹ Você pode referenciar seus serviços, Dockerfiles, arquivos de configuração e como eles vão se comportar durante o build. ▹ Resolução de ordem de dependência ▹ Facilita escalar. Sério. ▹ Torna o chato, legal de novo :)
  • 41. COMANDOS DO DOCKER- COMPOSE... BUILD Builda o conteúdo do arquivo docker-compose.yml Para buildar sem cache, usamos -- no-cache UP Sobe o conteúdo do arquivo docker-compose.yml STOP Para todos os containers filhos do docker-compose.yml do projeto SCALE Escala a aplicação selecionada scale api=3 RM & KILL Remove os containers parados do projeto. Use o -f para force. Mata todos os containers do projeto LOGS Mostra os logs do projeto atual. Toda a saída padrão de execução. 41
  • 42. DICAS SOBRE ORQUESTRAÇÃO 42 Vulgo coisas que eu gostaria que alguém tivesse me dito sobre o Docker...
  • 43. DICAS MAROTAS43 ▹ Alpine Linux - Uma distribuição Linux Minimalista que serve pra trabalhos braçais e rápidos, como Cache, containers services que sobem, executam algo e morrem (ex: dump, restore, compose e etc). ▹ Modularização de ambiente Dev & Test e Prod via compose. Referenciamos um docker-compose alternativo com o -f Ex: docker-compose -f docker-compose-dev.yml ou -f docker- compose-prod.yml
  • 44. DICAS MAROTAS44 ▹ Você pode containerizar serviços simples, como um Cron, um ‘npm install’, um ‘composer update’, um restore do banco de dados, um Webhook, uma chamada Curl e etc. ▹ Usar o HaProxy para construir um Load Balance entre containers. ▹ Ambientes Containerizados funcionam muito bem para comportar e escalar API’s REST. ▹ Sempre limpe seus containers após um yum ou apt (Ex: apt-get autoremove; apt-get clean; apt-get autoclean)
  • 46. E NO PRÓXIMO CAPÍTULO... 46
  • 47. 47 E NO PRÓXIMO CAPÍTULO ▹ Introdução ao Google Kubernetes ▹ Instrodução ao Docker Swarm ▹ Construir e Escalar uma API REST completa usando PHP 7 + NGINX + SILEX + MEMCACHE + MySQL + MongoDB ▹ Montar um ambiente completo de Teste, CI & CD, Build e Deploy com integrações do Docker como Jenkins e GIT