Docker para maiores
-
Upload
matheus-fidelis -
Category
Technology
-
view
306 -
download
0
Transcript of Docker para maiores
![Page 1: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/1.jpg)
DOCKER PARA MAIORES
Matheus Fidelis - @fidelissauro
![Page 2: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/2.jpg)
$WHOAMIMatheus FidelisDesenvolvedor Web PHP & DevOps Twitter: @fidelissauroSuperlogica - Plataforma Email: [email protected]: http://nanoshots.com.br
2
![Page 3: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/3.jpg)
CRONOGRAMA DE BORDO3
Docker via Cli
Dockerfiles
Docker Compose
![Page 4: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/4.jpg)
O QUE É DOCKER?
4
![Page 5: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/5.jpg)
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
![Page 6: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/6.jpg)
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
![Page 7: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/7.jpg)
CONTAINER X VM?
7
![Page 8: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/8.jpg)
”
“Nada se cria, tudo se copia, e sempre de um jeito novo”
▹Lars Herrmann
8
![Page 9: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/9.jpg)
POR QUE DOCKER?
9
![Page 10: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/10.jpg)
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
![Page 11: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/11.jpg)
11
![Page 12: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/12.jpg)
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!
![Page 13: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/13.jpg)
QUALQUER NUVEM
13
![Page 14: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/14.jpg)
USE QUALQUER COISA
14
![Page 15: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/15.jpg)
ONDE QUEREMOS CHEGAR COM DOCKER?
15
![Page 16: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/16.jpg)
CI & CD CONTINUOUS INTEGRATION AND CONTINUOUS DELIVERY
FAST SCALING
INFRAESTRUTURA ÁGIL
16
![Page 17: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/17.jpg)
ALGUNS CASES NA SUPERLOGICA (Até o momento)
17
![Page 18: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/18.jpg)
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
![Page 19: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/19.jpg)
Hosting API▹ API de Hospedagem do novo
recurso de Sites Institucionais da Superlogica
▹ PHP 7 FPM, Bash Script, Apache, MySQL e Varnish
19
![Page 20: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/20.jpg)
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
![Page 21: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/21.jpg)
1
A estrada até aqui...
![Page 22: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/22.jpg)
DOCKER ON CLI(VULGO ORQUESTRAÇÃO V1D4 L0K4)
22
![Page 23: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/23.jpg)
UM É POUCO, DOIS É BOM E TRÊS É DEMAIS
23
![Page 24: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/24.jpg)
SUBINDO UMA NA MÃO
24
matheus@fidelis~$ docker run -it ubuntu:latest /bin/bashroot@123129380 apt-get update; apt-get install php7.0 apache2(CTRL + D) matheus@fidelis~$ docker psmatheus@fidelis~$ docker commit 123129380 msfidelis/apache
![Page 25: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/25.jpg)
ORQUESTRAÇÃO BÁSICA(UMA PALAVRINHA SOBRE RECEITAS DE BOLO)
25
![Page 26: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/26.jpg)
DOCKERFILE(A RECEITA DO BOLO, VULGO CONTAINER)
26
![Page 27: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/27.jpg)
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
![Page 28: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/28.jpg)
ESTRUTURA DE UMA DOCKERFILE28
![Page 29: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/29.jpg)
DOCKER BUILD
29
# docker build . -t seunome/nomedaimagem:versao# docker build . -t superlogica/aulaapache:latest# docker images
![Page 30: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/30.jpg)
BUILD DE UMA DOCKERFILE30
![Page 31: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/31.jpg)
BUILD DE UMA DOCKERFILE31
![Page 32: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/32.jpg)
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
![Page 33: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/33.jpg)
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.
![Page 34: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/34.jpg)
DIGA NÃO AO GO-HORSE(Piadinha infame)
34
![Page 35: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/35.jpg)
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
![Page 36: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/36.jpg)
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:3306docker 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.confdocker run -t --name cache memcache:alpine -p 11211:11211docker run -t --name php php7-fpm:lastest -v ./code:/var/www/html \
--link mysql --link apache --link memcache -p 9000:9000
36
![Page 37: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/37.jpg)
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
![Page 38: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/38.jpg)
ORQUESTRAÇÃO DE GENTE GRANDE(UMA SINFONIA ENTRE SISTEMAS)
38
![Page 39: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/39.jpg)
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 :)
![Page 40: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/40.jpg)
40DO
CKER
-CO
MPO
SE.Y
ML
![Page 41: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/41.jpg)
COMANDOS DO DOCKER-COMPOSE...
BUILDBuilda o conteúdo do arquivo docker-compose.ymlPara buildar sem cache, usamos --no-cache
UPSobe o conteúdo do arquivo docker-compose.yml
STOPPara todos os containers filhos do docker-compose.yml do projeto
SCALE Escala a aplicação selecionada scale api=3
RM & KILLRemove os containers parados do projeto. Use o -f para force.Mata todos os containers do projeto
LOGSMostra os logs do projeto atual. Toda a saída padrão de execução.
41
![Page 42: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/42.jpg)
DICAS SOBRE ORQUESTRAÇÃO
42
Vulgo coisas que eu gostaria que alguém tivesse me dito sobre o Docker...
![Page 43: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/43.jpg)
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
![Page 44: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/44.jpg)
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)
![Page 45: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/45.jpg)
DOCKER É 90% MINDSET E 10% TECNICA
45
![Page 46: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/46.jpg)
E NO PRÓXIMO CAPÍTULO...
46
![Page 47: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/47.jpg)
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
![Page 48: Docker para maiores](https://reader035.fdocument.pub/reader035/viewer/2022081507/58730bbb1a28ab99088b6ce1/html5/thumbnails/48.jpg)
48
OBRIGADO!https://github.com/msfidelis/DockerParaMaioresSuperlogica/