SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
Docker na Vida Real
Fernando Ike
Fernando Ike
Clientes Latam
Arquitetura anterior
Incidente
"Day 12 Occupy Wall Street September 28 2011 Shankbone 17" by David Shankbone - Eget arbejde. Licensed under Creative Commons Attribution 3.0 via Wikimedia Commons"
"Stamps of Russia 2012 No 1559-61 Mascots 2014 Winter Olympics" by Russian Post, Publishing and Trade Centre "Marka" (ИТЦ «Марка»). The design of the souvenir sheet by O. Shushlebina. Scanned
by Dmitry Ivanov. - From a personal collection.. Licensed under Public domain
https://scottlinux.com/2013/04/06/wso-web-shell-php-shell-used-by-hackers/
Incidente
● Plugin Askimet PHP
● PHP Web Shell
● Injeção de páginas web
Rebuilding...
Premissas
Premissas / Requisitos
● Isolamento dos sites/aplicações
● Facilidade de manutenção e
migração
● Facilidade de gerar
documentação
● Portável
Isolamento
Fonte: http://www.itdestination.com/training/courses/adv-linux/
Isolamento / VMs
● Boa documentação
● 1 VM por site/aplicação
● Aumento da complexidade
● Orquestração - Chef, Puppet, etc
● Muito conhecidos
● Custo maior total
● Fácil de documentar
Isolamento / Containers
● Chroot turbinado
● Configuração mais complexa
● +- conhecidos
● VServer não suportado no IaaS
contratado
● Relativamente fácil de documentar
Isolamento / Containers
● Chroot turbinado
● Custo baixo
● Fácil de configurar
● Conhecidos
● Fácil de documentar
● Fácil manutenção
Escolhido...
VMs
Linode
1 VM = $ 10
8 VMs
$ 960/year
https://www.flickr.com/photos/editor/6698208975
https://www.flickr.com/photos/bitzcelt/2516437322
Containers
1 VM
8 containers
$ 120/year
https://www.flickr.com/photos/kalexanderson/6012209875
Docker: Overview
● Criado em 2013
● Baseado no LXC
● Versionamento de container
● Histórico de mudança
● Like Git ($docker {commit, pull, request, diff, tag})
● Docker Hub
● Disruptivo/Revolucionário
Ecossistema
Instalando...
● Debian
○ #aptitude install docker.io
● Ubuntu
○ #apt-get install docker.io
FROM php:5.6-apache
COPY package /srv/www/app
ADD app_apache.conf /etc/apache2/sites-enable/app.conf
WORKDIR /srv/www/app
CMD [ “/usr/sbin/apache2", "-D", “FOREGROUND” ]
Dockerfile
Building and running
$docker build --rm --no-cache -t=”app1” .
#docker run -d -p 80:80 app1
$docker run -it php:5.6-apache /bin/bash
$docker run -it ruby:2.2 irb
$docker run -it python:3.4 python
$xhost +
$docker run --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -v 
/home/fike/d:/d -v /var/log/atom:/var/log/atom 
-e DISPLAY=unix$DISPLAY jess/atom
Rebuilding...
http://www.geograph.org.uk/photo/3263456
Nova arquitetura
Rebuilding...
Serviços vs Aplicações
Serviços
● Apache/Nginx
● Postgres/MySQL/MongoDB/Memcache
● Rails/Django/Symfony/JBoss
● Ubuntu/Debian/CentOS
● Nginx/Varnish/HAProxy
Aplicações
● Site1 (Apache+ Nginx + PHP+Symfony
● Site2 (Apache+ Nginx + PHP+Symfony)
● App1 (Jboss+MySQL+Rabbimq)
● App2 (Django, Unicorn, Cassandra)
● App3 (Wordpress)
● App3 (Drupal)
Dependências
Dependências (bibliotecas)
Pacotes .deb, .rpm, etc.
● Dependências controladas pela SO
● "Versões" empacotadas
● Atualizações de Segurança pelo SO
● Controlado pelo SO
● Atualização das versões das bibliotecas + complexas
Dependências (bibliotecas)
Composer/PIP/Gems/CPAN, etc...
● Dependências controladas pela "aplicação"
● "Independente" de SO
● "User friendly" para desenvolvedores
● Fácil gerenciamento das “versões” das bibliotecas
https://www.flickr.com/photos/clonedmilkmen/3604999084/in/photostream/
Docker e Rede
● Iptables
● Bridge
● 172.17.XXX.XXX/16
● Rede entre containers: override /etc/hosts
● Usar o IP de outro container
Docker e Rede
$docker run -d -p 9999:9999 app1
$docker run -d -p 9999:9999/udp -p 9999:9999 app1
$docker run [...] --name docker [...] --link database:mysql app1
$docker run [...] --net="container:CONTAINERID" app2
Docker e Rede
[...]
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 172.17.0.83 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.17.0.83 tcp dpt:25
ACCEPT udp -- 0.0.0.0/0 172.17.0.73 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 172.17.0.73 tcp dpt:53
ACCEPT tcp -- 172.17.0.2 172.17.0.6 tcp spt:5432
ACCEPT tcp -- 172.17.0.6 172.17.0.2 tcp dpt:5432
[...]
Localização - Idioma
[…]
RUN echo "locales locales/locales_to_be_generated multiselect pt_BR.UTF-8 UTF-8" | debconf-
set-selections &&
echo "locales locales/default_environment_locale select pt_BR.UTF-8" | debconf-set-
selections
RUN apt-get install locales -qq
ENV LC_ALL pt_BR.UTF-8
[...]
Segurança
Segurança
● Hardening
● Filesystem bind
● SELinux, Apparmor, Etc..
● Volumes
● Usuários
http://www.pcworld.com/article/2825032/linux-botnet-mayhem-
spreads-through-shellshock-exploits.html
Shellshock
● CVE-2014-6271
● CVE-2014-6277
● CVE-2014-6278
● CVE-2014-7169
● CVE-2014-7186
● CVE-2014-7187
● Remover as imagens base dos
containers (Debian, Ubuntu,
CoreOS, etc.)
● Rebuild das imagens
● Novo deploy
Lições aprendidas
Lições aprendidas
● “docker build --rm --no-cache ...” + cautela
● SO com muitas regras de firewall (Iptables)
● Monitoramento dos serviços (aplicações)
Lições aprendidas
● Banco de dados em containers
● Múltiplos comandos por passo (step)
● Use “orquestradores” para aplicações complexas
(Compose, Kubernetes, Mesos, Deis, Flocker, etc)
TODO
● Usar Chef/Puppet
● Implantar CI (Circles)
● Docker Composer
● libnetworking
● Service Discovery
Links
-(Docker) Rede avançado: https://docs.docker.com/articles/networking/
- deb vs. rpm vs. gem: http://lwn.net/Articles/75034/
- Mesos: http://mesos.apache.org/
- Docker + OpenvSwitch: https://goldmann.pl/blog/2014/01/21/connecting-docker-containers-on-multiple-hosts/
- Docker Hub: https://registry.hub.docker.com
- Docker Compose: https://docs.docker.com/compose/
- Docker Swarm: https://docs.docker.com/swarm/
-CoreOS: https://coreos.com/
-Kubernete: http://kubernetes.io/
The Docker Ecosystem: Scheduling and Orchestration: https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-
scheduling-and-orchestration
Contatos
● http://www.fernandoike.com
● fernando.ike at gmail.com
● https://www.linkedin.
com/in/fernandoike
● @fernandoike
● https://hub.docker.com/u/fike/

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Docker volumes
Docker volumesDocker volumes
Docker volumes
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao 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
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
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
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
 
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
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação 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)
 
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
 

Destaque

Destaque (16)

Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm
 
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com BeanstalkAWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your Software
 
Simulado da prova lpi 101
Simulado da prova lpi 101Simulado da prova lpi 101
Simulado da prova lpi 101
 
A lista do PostgerSQL Brasil caiu?
A lista do PostgerSQL Brasil caiu? A lista do PostgerSQL Brasil caiu?
A lista do PostgerSQL Brasil caiu?
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e Docker
 
Concurrency in Ruby
Concurrency in RubyConcurrency in Ruby
Concurrency in Ruby
 
4 ferramentas para acompanhar seu app em produção pelo slack
4 ferramentas para acompanhar seu app em produção pelo slack4 ferramentas para acompanhar seu app em produção pelo slack
4 ferramentas para acompanhar seu app em produção pelo slack
 
Tech for non techs
Tech for non techsTech for non techs
Tech for non techs
 
ZendFramework2 & Symfony2
ZendFramework2 & Symfony2ZendFramework2 & Symfony2
ZendFramework2 & Symfony2
 
XP - eXtreme Programming - 2010
XP - eXtreme Programming - 2010XP - eXtreme Programming - 2010
XP - eXtreme Programming - 2010
 
Otimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesOtimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testes
 
Apresentação sobre Rails - 2010
Apresentação sobre Rails - 2010Apresentação sobre Rails - 2010
Apresentação sobre Rails - 2010
 
Go Lang migrating billions of documents
Go Lang  migrating billions of documentsGo Lang  migrating billions of documents
Go Lang migrating billions of documents
 

Semelhante a Docker na vida real

Funtoo escla
Funtoo esclaFuntoo escla
Funtoo escla
Daniel
 

Semelhante a Docker na vida real (20)

Project HA
Project HAProject HA
Project HA
 
Asterisk
AsteriskAsterisk
Asterisk
 
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)
 
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...
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Criação de ambientes em chroot
Criação de ambientes em chrootCriação de ambientes em chroot
Criação de ambientes em chroot
 
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Funtoo escla
Funtoo esclaFuntoo escla
Funtoo escla
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Docker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHONDocker API Client with PHP and PYTHON
Docker API Client with PHP and PYTHON
 
Funtoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremoFuntoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremo
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Supervisão e Monitorização
Supervisão e MonitorizaçãoSupervisão e Monitorização
Supervisão e Monitorização
 
Construindo um data warehouse com Pentaho e Docker
Construindo um data warehouse com Pentaho e DockerConstruindo um data warehouse com Pentaho e Docker
Construindo um data warehouse com Pentaho e Docker
 

Mais de Fernando Ike

Researching postgresql
Researching postgresqlResearching postgresql
Researching postgresql
Fernando Ike
 

Mais de Fernando Ike (20)

Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
(Quase) 10 anos de DevOps, e agora?
(Quase) 10 anos de DevOps, e agora? (Quase) 10 anos de DevOps, e agora?
(Quase) 10 anos de DevOps, e agora?
 
Containers and Databases
Containers and DatabasesContainers and Databases
Containers and Databases
 
Infraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile TrendsInfraestrutura Imutável - Agile Trends
Infraestrutura Imutável - Agile Trends
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvem
 
DevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus PartyDevOps Anti-Patterns - Campus Party
DevOps Anti-Patterns - Campus Party
 
Blameless: A culpa não é sua
Blameless: A culpa não é suaBlameless: A culpa não é sua
Blameless: A culpa não é sua
 
DevOps: A revolução ruidosa da TI
DevOps: A revolução ruidosa da TIDevOps: A revolução ruidosa da TI
DevOps: A revolução ruidosa da TI
 
Docker Swarm Cluster
Docker Swarm ClusterDocker Swarm Cluster
Docker Swarm Cluster
 
DevOps - Por onde começar
DevOps - Por onde começarDevOps - Por onde começar
DevOps - Por onde começar
 
DevOps Anti-Patterns
DevOps Anti-PatternsDevOps Anti-Patterns
DevOps Anti-Patterns
 
Akamai Cloud Security
Akamai Cloud SecurityAkamai Cloud Security
Akamai Cloud Security
 
Management 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidadeManagement 3.0 - a vida pós-agilidade
Management 3.0 - a vida pós-agilidade
 
Devops
DevopsDevops
Devops
 
Docker e postgresql
Docker e postgresqlDocker e postgresql
Docker e postgresql
 
Banco caiu! E a gora?
Banco caiu! E a gora?Banco caiu! E a gora?
Banco caiu! E a gora?
 
Researching postgresql
Researching postgresqlResearching postgresql
Researching postgresql
 
Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQL
 
Postgres nuvens
Postgres nuvensPostgres nuvens
Postgres nuvens
 
Debian squeeze
Debian squeezeDebian squeeze
Debian squeeze
 

Último

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Último (7)

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 

Docker na vida real