2. Luiz Carlos Faria
#solutionArchitect #softwareArchitect
#developer
Innovation & Offer na
MTAC (2017)
@luizcarlosfaria
luizcarlosfaria.net
t.me/luizcarlosfaria
3. • A vida do Docker, de onde vem, o que come?
• O que é Docker?
• Principais Conceitos
• Pra que serve?
• Por que docker é incrível?
• Hands-on
• MongoDB #infra #dev
• MySQL #infra #dev
• Nginx #infra
• NodeJS #dev
everywhere Agenda
Dúvidas?
• Antes da demo
• Depois da demo
4. Por que Docker é importante?
Como eu, com 14 anos no .NET caí de paraquedas no docker?
everywhere
Links relevantes:
https://www.microsoft.com/net/core
https://hub.docker.com/explore/
https://www.microsoft.com/en-us/sql-server/sql-server-2017
“Docker não é objetivo, docker é um meio
inteligente de entregar mais:
Mais exemplos, mais testes, mais
tecnologias, mais conhecimento.”
5. A vida do Docker, de onde vem, o que come?
O que é Docker?
Um facilitador que utiliza velhas features do Linux para criar
recursos independentes e gerenciáveis em um ecossitema
de colaborativo, escalável e rico.
6. A vida do Docker, de onde vem, o que come?
O que é Docker?
Facilitador:
A inovação está somente na plataforma. As
features de isolamento de processos e suas
demais capacidades são herdadas pelo projeto
LXC (Linux Containers).
Velhas features do Linux:
Cgroups, namespaces, copy-on-write (FS)
Containers já existiam, docker traz
o conceito de imagem!
7. A vida do Docker, de onde vem, o que come?
Principais conceitos
Dockerfile:
Script que determina todos os steps necessários
para a criação de uma imagem, desde a
instalação de pacotes, adição de arquivos e
configurações.
Imagens:
Resultado do build de um Dockerfile.
Containers:
Instâncias de uma imagem, executando
geralmente um único processo com:
• Seu próprio espaço de processos
• Sua própria interface de rede
• Seus próprios pacotes (dependencias do SO)
• Isolado dos demais containers
8. A vida do Docker, de onde vem, o que come?
Pra que serve o docker?
Aumentar densidade computacional de forma
eficiente e eficás, consolidando features do kernel do linux em
uma CLI consistente, e um rico ecossitema de suporte.
9. A vida do Docker, de onde vem, o que come?
Pra que serve o docker?
Eficiência – fazer certo as coisas
• Codificando minhas
dependências
• Codificando processos
• Automaticamente documentando
meus requisitos de infra
• Automatizando processos
• Aumentando o reaproveitamento
• Reduzindo falhas
Eficácia – fazer as coisas certas
• Empoderando o
desenvolvedor
• Desonerando a infraestrutura
• Sem perder controle
• Sem perder segurança
• Aumentando a rastreabilidade
• Reduzindo gargalos
• Melhorando a comunicação
• Consumindo melhor meus
recursos
10. A vida do Docker, de onde vem, o que come?
Pra que serve o docker?
Exemplos
Dev / infra (alternados)
11. A vida do Docker, de onde vem, o que come?
Pra que serve o docker? #densidade
Uma aplicação PHP + MySQL
Sem Docker
Servidor 1 – “Nome:DB” – MySQL
Servidor 2 e 3 – “Nome:APP1, APP2” -
PHP
Servidor 4 – “Nome:APP” LB (Proxy
Reverso)
Com Docker
Servidor 1 –
Container – PHP
Container – MYSQL
Servidor 2 –
Container PHP
LB – Nativo!
docke-compose.yml
12. A vida do Docker, de onde vem, o que come?
Pra que serve o docker? #diversidade
ASP.NET Core
SQL Server
docker-compose.yml
version:"3"
services:
web:
build:.
ports:
- "8000:80"
depends_on:
- db
db:
image:"microsoft/mssql-server-linux"
environment:
SA_PASSWORD:"your_password"
ACCEPT_EULA:"Y"
https://docs.docker.com/compose/aspnet-mssql-compose/
13. A vida do Docker, de onde vem, o que come?
Pra que serve o docker? #infra
Imagens interessantes (hub.docker.com)
LB & HA
hub.docker.com/_/haproxy/
hub.docker.com/_/nginx/
hub.docker.com/_/traefik/
Log
hub.docker.com/r/graylog2/server/
hub.docker.com/r/grafana/grafana/
hub.docker.com/_/sentry/
Monitoramento
hub.docker.com/r/datadog/docker-dd-agent/
www.zabbix.org/wiki/Dockerized_Zabbix/
14. A vida do Docker, de onde vem, o que come?
Pra que serve o docker? #diversidade
Django
PostgreSQL
docker-compose.yml
version:'3'
services:
db:
image:postgres
web:
build:.
command:python3manage.pyrunserver0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
https://docs.docker.com/compose/django/
15. A vida do Docker, de onde vem, o que come?
Pra que serve o docker? #infra
Imagens interessantes (hub.docker.com)
SQL DB’s
hub.docker.com/_/mysql/
hub.docker.com/_/postgres/
hub.docker.com/r/microsoft/mssql-server-linux/
NoSQL
hub.docker.com/_/mongo/
hub.docker.com/_/redis/
hub.docker.com/_/elasticsearch/
hub.docker.com/_/rethinkdb/
ALM & Suporte
hub.docker.com/_/jenkins/
hub.docker.com/r/gitlab/gitlab-ce/
hub.docker.com/r/gocd/gocd-server/
hub.docker.com/_/sonarqube/
16. A vida do Docker, de onde vem, o que come?
Pra que serve o docker? #diversidade
NodeJS
MongoDB
docker-compose.yml
version: '3'
services:
gen_test_app-api:
image:gen_test_app-api
depends_on:
-mongo
networks:
-gen_test_app-net
ports:
-"3000:3000"
environment:
mongodb_app: mongodb://root:e8e1f0@mongo:27017/admin
api_port: 3000
mongo:
image:mongo
networks:
-gen_test_app-net
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: e8e1f0
networks:
gen_test_app-net:
driver:bridge
https://docs.docker.com/compose/aspnet-mssql-compose/
17. A vida do Docker, de onde vem, o que come?
Pra que serve o docker? #infra
Imagens interessantes (hub.docker.com)
Java
hub.docker.com/_/java/
hub.docker.com/_/maven/
hub.docker.com/r/oracle/openjdk
/
hub.docker.com/_/openjdk/
hub.docker.com/r/oracle/glassfis
h/
hub.docker.com/_/tomcat/
MQ
hub.docker.com/_/rabbitmq/
hub.docker.com/r/webcenter/activemq/
18. A vida do Docker, de onde vem, o que come?
Pra que serve o docker?
#1 usar imagens prontas (hub.docker.com)
#2 criar imagens
#3 publicar imagens
#3 implantar containers em qualquer servidor(*)
#4 mover containers entre servidores de distribuições diferentes
(*) Respeitando arquitetura do SO (Linux/x86_64, Linux/armv7l, Windows/x86_64)
https://github.com/luizcarlosfaria/kb/wiki/Docker-no-Windows-vs-Docker-no-Linux
19. Preciso instalar
esse pacote, eu
esqueci de colocar
no documento.
Por que docker é incrível?
Imagens nascem no build do
desenvolvedor
Imagens são imutáveis
Uma imagem é portável
A imagem que saiu de desenvolvimento chegará em produção sem modificação.
Na minha máquina
funciona
Não tenho tempo
de instalar isso pra
você
Não tenho
hardware
disponível
para você
testar isso.
Cria um
manual de
instalação
disso.
Vou levar 2
semanas para subir
esse ambiente
todo.Não tenho como saber
se vai funcionar com a
nova versão do
produto xpto
A instalação da
aplicação XPTO1
fez a minha
aplicação parar.
Ih, você está usando uma
versão diferente da que
temos no servidor. Tenho
de criar uma nova
máquina para você.
20. Por que docker é incrível?
As imagens podem conter todas as
dependências de uma distribuição
linux
• Debian
• Alpine
• Fedora
• Centos
• Ubuntu
Docker roda em qualquer cloud
Amazon
Azure
Bluemix
Digital Ocean
...
E qualquer cloud que ofereça suporte à criação de
uma máquina virtual
"A eficiência consiste em fazer certo as coisas: geralmente está ligada ao nível operacional, como realizar as operações com menos recursos – menos tempo, menor orçamento, menos pessoas, menos matéria-prima, etc…"
"Já a eficácia consiste em fazer as coisas certas: geralmente está relacionada ao nível gerencial".
"A eficiência consiste em fazer certo as coisas: geralmente está ligada ao nível operacional, como realizar as operações com menos recursos – menos tempo, menor orçamento, menos pessoas, menos matéria-prima, etc…"
"Já a eficácia consiste em fazer as coisas certas: geralmente está relacionada ao nível gerencial".
"A eficiência consiste em fazer certo as coisas: geralmente está ligada ao nível operacional, como realizar as operações com menos recursos – menos tempo, menor orçamento, menos pessoas, menos matéria-prima, etc…"
"Já a eficácia consiste em fazer as coisas certas: geralmente está relacionada ao nível gerencial".