SlideShare a Scribd company logo
1 of 51
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
Docker em
Clusters
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
”
“Nada se cria, tudo se copia, e
sempre de um jeito novo”
▹Lars Herrmann
7
CONTAINER X VM?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
1
A estrada até aqui...
DOCKER ON CLI
(VULGO ORQUESTRAÇÃO
V1D4 L0K4)
18
UM É POUCO, DOIS É BOM
E TRÊS É DEMAIS
19
SUBINDO UMA NA MÃO20
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)
21
DOCKERFILE
(A RECEITA DO BOLO, VULGO
CONTAINER)
22
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.
23
ESTRUTURA DE UMA DOCKERFILE
24
DOCKER BUILD
25
# docker build . -t seunome/nomedaimagem:versao
# docker build . -t superlogica/aulaapache:latest
# docker images
BUILD DE UMA DOCKERFILE
26
BUILD DE UMA DOCKERFILE
27
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.
28
AINDA NÃO TA LEGAL…
MUITO LONGE DO CI/CD
29
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)
30
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
31
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
32
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).
33
ORQUESTRAÇÃO DE GENTE GRANDE
(UMA SINFONIA ENTRE SISTEMAS)
34
DOCKER COMPOSE35
▹ 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 :)
36
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.
37
DICAS SOBRE
ORQUESTRAÇÃO
38
Vulgo coisas que eu gostaria que alguém tivesse me
dito sobre o Docker...
DICAS MAROTAS39
▹ 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 MAROTAS40
▹ 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)
LET’S PRAY TO THE DEMO GODS41
O DOCKER MAIS ROCK N` ROLL
42
Quando a brincadeira acaba e chega hora de rodar em larga escala.
(Ou quando a orquestração nativa começa a nos limitar)
QUANDO CHAMAR REFORÇOS43
▹ Suas Stacks de Compose não escalam mais dentro das suas limitações
de Hardware.
▹ Sua aplicação cresceu tanto que você não tem mais como escalar
manualmente nem depender de balanceadores de carga
convencionais.
▹ Sua aplicação cresceu TANTO que você não consegue mais controlar
onde estão alocados os seus recursos. E isso passa a não importar.
▹ Quando seu deploy precisa de mais consistência e sua nova release
precisa ser replicada em diversos servidores muito rapidamente.
CHAMANDO REFORÇOS44
CHAMANDO REFORÇOS45
DOCKER SWARM46
▹ Criação nativa de Clusters
▹ Possui um master e infinitos Slaves
▹ Permite deploy via Docker-Compose
▹ Rápida integração de novos nodes
▹ Orientado a serviços
▹ Balance e Scaling
▹ Alta disponibilidade
▹ Rápido Failover
▹ Gerenciamento por meio de API
APACHE MESOS47
▹ Sistemas distribuidos
▹ Isolamento de Serviços
▹ Uma abstração minimalista do Kernel Linux
▹ API de um Kernel confiável entre nodes
KUBERNETES48
▹ Gerenciamento de Clusters
▹ Alta disponibilidade
▹ Gerenciamento Total do Ambiente
▹ Master e vários Slaves replicáveis
▹ Deploy em Larga Escala
▹ Load balance, Auto Scaling
▹ Não depende só de Docker (Rocket)
▹ Ambientes de médio/grande/enorme porte
▹ Muita gente usando em produção
▹ Web UI
KUBERNETES49
DOCKER
É 90%
MINDSET
E 10%
TECNICA
50
51
OBRIGADO!
https://github.com/msfidelis/DockerParaMaiores/

More Related Content

What's hot

Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorDicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorFellyph Cintra
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 
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 ComposeRoberto Hashioka
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
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
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Ismael Stahelin
 
Os camaradas Grunt e Bower
Os camaradas Grunt e BowerOs camaradas Grunt e Bower
Os camaradas Grunt e BowerA2 Comunicação
 

What's hot (20)

Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
Vamos conversar sobre cache
Vamos conversar sobre cacheVamos conversar sobre cache
Vamos conversar sobre cache
 
PHP com Docker
PHP com DockerPHP com Docker
PHP com Docker
 
Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorDicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Tom cat e eclipse
Tom cat e eclipseTom cat e eclipse
Tom cat e eclipse
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Conceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java NoroesteConceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java Noroeste
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Dev Ops at Paguemenos
Dev Ops at PaguemenosDev Ops at Paguemenos
Dev Ops at Paguemenos
 
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
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
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...
 
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Deploy de aplicações Ruby com Mina - TDC Floripa 2014
Deploy de aplicações Ruby com Mina - TDC Floripa 2014
 
Os camaradas Grunt e Bower
Os camaradas Grunt e BowerOs camaradas Grunt e Bower
Os camaradas Grunt e Bower
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 

Viewers also liked

Управление договорами проще с M-Files
Управление договорами проще с M-FilesУправление договорами проще с M-Files
Управление договорами проще с M-FilesFTS Russia
 
Управляем качеством с помощью ИТ-системы
Управляем качеством с помощью ИТ-системыУправляем качеством с помощью ИТ-системы
Управляем качеством с помощью ИТ-системыFTS Russia
 
Kebijakan DITPSMK
Kebijakan DITPSMKKebijakan DITPSMK
Kebijakan DITPSMKTaufiq Abah
 
PKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMKPKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMKThe World Bank
 
Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016The World Bank
 
Tentang DNA Initiative
Tentang DNA InitiativeTentang DNA Initiative
Tentang DNA InitiativeDNA Initiative
 
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919The World Bank
 
Docker QNAP Container Station
Docker QNAP Container StationDocker QNAP Container Station
Docker QNAP Container StationThe World Bank
 
Sprint softbank (Merger Analysis)
Sprint softbank (Merger Analysis)Sprint softbank (Merger Analysis)
Sprint softbank (Merger Analysis)Taposh Roy
 
Instruktur Teman Sebaya
Instruktur Teman SebayaInstruktur Teman Sebaya
Instruktur Teman SebayaThe World Bank
 
Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)The World Bank
 
Softbank Key Business Review
Softbank Key Business ReviewSoftbank Key Business Review
Softbank Key Business ReviewCrispin Francis
 
Google Design Sprint (internal sharing)
Google Design Sprint (internal sharing)Google Design Sprint (internal sharing)
Google Design Sprint (internal sharing)Chuan Yang
 
VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0The World Bank
 
SoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi SonSoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi SonThe World Bank
 
Peta Jalan Kebekerjaan SMK - 9 Agustus 2016
Peta Jalan Kebekerjaan SMK - 9 Agustus 2016Peta Jalan Kebekerjaan SMK - 9 Agustus 2016
Peta Jalan Kebekerjaan SMK - 9 Agustus 2016The World Bank
 
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016The World Bank
 

Viewers also liked (20)

Управление договорами проще с M-Files
Управление договорами проще с M-FilesУправление договорами проще с M-Files
Управление договорами проще с M-Files
 
Управляем качеством с помощью ИТ-системы
Управляем качеством с помощью ИТ-системыУправляем качеством с помощью ИТ-системы
Управляем качеством с помощью ИТ-системы
 
Kebijakan DITPSMK
Kebijakan DITPSMKKebijakan DITPSMK
Kebijakan DITPSMK
 
PKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMKPKS 5 Menteri terkait Vokasi dan SMK
PKS 5 Menteri terkait Vokasi dan SMK
 
Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016Penetrasi & Prilaku Pengguna Internet Indonesia 2016
Penetrasi & Prilaku Pengguna Internet Indonesia 2016
 
Tentang DNA Initiative
Tentang DNA InitiativeTentang DNA Initiative
Tentang DNA Initiative
 
Psikologi pendidikan.
Psikologi pendidikan.Psikologi pendidikan.
Psikologi pendidikan.
 
SMK Teaching Factory
SMK Teaching FactorySMK Teaching Factory
SMK Teaching Factory
 
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
MOU 5 Menteri Terkait Vokasi dan SMK 4 5919
 
Docker QNAP Container Station
Docker QNAP Container StationDocker QNAP Container Station
Docker QNAP Container Station
 
Sprint softbank (Merger Analysis)
Sprint softbank (Merger Analysis)Sprint softbank (Merger Analysis)
Sprint softbank (Merger Analysis)
 
Instruktur Teman Sebaya
Instruktur Teman SebayaInstruktur Teman Sebaya
Instruktur Teman Sebaya
 
Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)Instruktur Teman Sebaya (edit 28nov)
Instruktur Teman Sebaya (edit 28nov)
 
Softbank Key Business Review
Softbank Key Business ReviewSoftbank Key Business Review
Softbank Key Business Review
 
Google Design Sprint (internal sharing)
Google Design Sprint (internal sharing)Google Design Sprint (internal sharing)
Google Design Sprint (internal sharing)
 
VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0VSphere Integrated Containers v3.0
VSphere Integrated Containers v3.0
 
SoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi SonSoftBank ARM TechCon Keynote Masayoshi Son
SoftBank ARM TechCon Keynote Masayoshi Son
 
Peta Jalan Kebekerjaan SMK - 9 Agustus 2016
Peta Jalan Kebekerjaan SMK - 9 Agustus 2016Peta Jalan Kebekerjaan SMK - 9 Agustus 2016
Peta Jalan Kebekerjaan SMK - 9 Agustus 2016
 
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
Tindak Lanjut Program Pendidikan Vokasi 30 Agustus 2016
 
Softbank
SoftbankSoftbank
Softbank
 

Similar to Docker Para Maiores - GDG Cabreúva

Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
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
 
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 containersFrancisco 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
 
Docker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarDocker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarVinícius Feitosa
 
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
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
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
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Docker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeDocker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeRafael Gomes
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
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
 

Similar to Docker Para Maiores - GDG Cabreúva (20)

Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Oficina docker
Oficina dockerOficina docker
Oficina 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
 
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
 
Docker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistarDocker - Essa baleia vai te conquistar
Docker - Essa baleia vai te conquistar
 
Docker
DockerDocker
Docker
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, 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
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o 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)
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Conheça o Docker
Conheça o DockerConheça o Docker
Conheça o Docker
 
Docker 1.12 - Swarm Mode
Docker 1.12 - Swarm ModeDocker 1.12 - Swarm Mode
Docker 1.12 - Swarm Mode
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
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
 

More from Matheus Fidelis

Criando API's com HapiJS
Criando API's com HapiJSCriando API's com HapiJS
Criando API's com HapiJSMatheus Fidelis
 
Desbravando o REST com Python
Desbravando o REST com PythonDesbravando o REST com Python
Desbravando o REST com PythonMatheus Fidelis
 
O Fantástico Mundo de Git
O Fantástico Mundo de GitO Fantástico Mundo de Git
O Fantástico Mundo de GitMatheus Fidelis
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebMatheus Fidelis
 

More from Matheus Fidelis (7)

Road to serverless
Road to serverlessRoad to serverless
Road to serverless
 
Criando API's com HapiJS
Criando API's com HapiJSCriando API's com HapiJS
Criando API's com HapiJS
 
Desbravando o REST com Python
Desbravando o REST com PythonDesbravando o REST com Python
Desbravando o REST com Python
 
Web scraping com python
Web scraping com pythonWeb scraping com python
Web scraping com python
 
O Fantástico Mundo de Git
O Fantástico Mundo de GitO Fantástico Mundo de Git
O Fantástico Mundo de Git
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação Web
 

Recently uploaded

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Recently uploaded (8)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Docker Para Maiores - GDG Cabreúva

  • 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 Docker em Clusters
  • 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
  • 7. ” “Nada se cria, tudo se copia, e sempre de um jeito novo” ▹Lars Herrmann 7
  • 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. 1 A estrada até aqui...
  • 18. DOCKER ON CLI (VULGO ORQUESTRAÇÃO V1D4 L0K4) 18
  • 19. UM É POUCO, DOIS É BOM E TRÊS É DEMAIS 19
  • 20. SUBINDO UMA NA MÃO20 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
  • 21. ORQUESTRAÇÃO BÁSICA (UMA PALAVRINHA SOBRE RECEITAS DE BOLO) 21
  • 22. DOCKERFILE (A RECEITA DO BOLO, VULGO CONTAINER) 22
  • 23. 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. 23
  • 24. ESTRUTURA DE UMA DOCKERFILE 24
  • 25. DOCKER BUILD 25 # docker build . -t seunome/nomedaimagem:versao # docker build . -t superlogica/aulaapache:latest # docker images
  • 26. BUILD DE UMA DOCKERFILE 26
  • 27. BUILD DE UMA DOCKERFILE 27
  • 28. 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. 28
  • 29. AINDA NÃO TA LEGAL… MUITO LONGE DO CI/CD 29 Ainda existe muito processo manual pra construir e subir containers. Não nos livramos da orquestração Vid4 L0k4.
  • 30. DIGA NÃO AO GO-HORSE (Piadinha infame) 30
  • 31. 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 31
  • 32. 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 32
  • 33. 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). 33
  • 34. ORQUESTRAÇÃO DE GENTE GRANDE (UMA SINFONIA ENTRE SISTEMAS) 34
  • 35. DOCKER COMPOSE35 ▹ 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 :)
  • 37. 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. 37
  • 38. DICAS SOBRE ORQUESTRAÇÃO 38 Vulgo coisas que eu gostaria que alguém tivesse me dito sobre o Docker...
  • 39. DICAS MAROTAS39 ▹ 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
  • 40. DICAS MAROTAS40 ▹ 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)
  • 41. LET’S PRAY TO THE DEMO GODS41
  • 42. O DOCKER MAIS ROCK N` ROLL 42 Quando a brincadeira acaba e chega hora de rodar em larga escala. (Ou quando a orquestração nativa começa a nos limitar)
  • 43. QUANDO CHAMAR REFORÇOS43 ▹ Suas Stacks de Compose não escalam mais dentro das suas limitações de Hardware. ▹ Sua aplicação cresceu tanto que você não tem mais como escalar manualmente nem depender de balanceadores de carga convencionais. ▹ Sua aplicação cresceu TANTO que você não consegue mais controlar onde estão alocados os seus recursos. E isso passa a não importar. ▹ Quando seu deploy precisa de mais consistência e sua nova release precisa ser replicada em diversos servidores muito rapidamente.
  • 46. DOCKER SWARM46 ▹ Criação nativa de Clusters ▹ Possui um master e infinitos Slaves ▹ Permite deploy via Docker-Compose ▹ Rápida integração de novos nodes ▹ Orientado a serviços ▹ Balance e Scaling ▹ Alta disponibilidade ▹ Rápido Failover ▹ Gerenciamento por meio de API
  • 47. APACHE MESOS47 ▹ Sistemas distribuidos ▹ Isolamento de Serviços ▹ Uma abstração minimalista do Kernel Linux ▹ API de um Kernel confiável entre nodes
  • 48. KUBERNETES48 ▹ Gerenciamento de Clusters ▹ Alta disponibilidade ▹ Gerenciamento Total do Ambiente ▹ Master e vários Slaves replicáveis ▹ Deploy em Larga Escala ▹ Load balance, Auto Scaling ▹ Não depende só de Docker (Rocket) ▹ Ambientes de médio/grande/enorme porte ▹ Muita gente usando em produção ▹ Web UI