Vagrant vs Docker?
Melhor Vagrant + Docker
About me
$nome = 'Wellington F. Silva';
$nick = ['_wsilva, 'tom', 'boina', 'fisi', 'iéié'];
$work = 'devop';
$background = '~2000';
$titles = ['ZCE PHP 5.3', 'Técnico
Telecom', 'Quase Bacharel SI - USP'];
$contact = ['twitter' => '_wsilva'];
Overview
● Problema da padronização
● Soluções
● Virtualização
● Conteinerização
● Comparação
● Vagrant
● Demo
● Bate papo
O problema
O problema
O problema
O problema
Exemplos:
● php substr vs mb_substr
O problema
Exemplos:
● php substr vs mb_substr
● valor default current_timestamp (MySQL vs
Percona)
Soluções
● Trabalhar direto no servidor (FTP)
Soluções
● Trabalhar direto no servidor (FTP)
● Montar na unha o ambiente de cada projeto
Soluções
● Trabalhar direto no servidor (FTP)
● Montar na unha o ambiente de cada projeto
● Virtualizar
Soluções
● Trabalhar direto no servidor (FTP)
● Montar na unha o ambiente de cada projeto
● Virtualizar
● Conteinerizar
Virtualização
Virtualização
● 1960 - cpu time sharing (inspiração)
Virtualização
● 1960 - cpu time sharing (inspiração)
● IBM 370 - Projetado para virtualização. Via
softare com o CP/CMS.
Virtualização
● 1960 - cpu time sharing (inspiração)
● IBM 370 - Projetado para virtualização. Via
softare com o CP/CMS.
● IBM z/VM - Case de sucesso com
virtualização por hardware.
Virtualização
● 1960 - cpu time sharing (inspiração)
● IBM 370 - Projetado para virtualização. Via
softare com o CP/CMS.
● IBM z/VM - Case de sucesso com
virtualização por hardware.
● Decada de 90 em diante: VMWare, Xen,
KVM, VirtualBox, etc...
Virtualização
Virtualização
Vantagem:
● Mesma VM nos ambientes dev, homolog e
prod
Virtualização
Vantagem:
● Mesma VM nos ambientes dev, homolog e
prod
● Padronização de ambientes.
Virtualização
Desvantagens:
● Montagem e inicialização lentos
Virtualização
Desvantagens:
● Montagem e inicialização lentos
● Gasta muitos recursos de hardware.
Virtualização
Next Step
● Técnicas de imagem e snapshots
Virtualização
Next Step
● Técnicas de imagem e snapshots
● Automação de montagens (Vagrant, Chef,
Puppet, Ansible)
Sistemas complexos
Sistemas complexos
● Difícil reproduzir todos os componentes em
dev. (5, 6, 7 até 10 VMs)
Sistemas complexos
● Difícil reproduzir todos os componentes em
dev. (5, 6, 7 até 10 VMs)
● Problemas de detalhes de comunicação
entre serviços
Sistemas complexos
● Difícil reproduzir todos os componentes em
dev. (5, 6, 7 até 10 VMs)
● Problemas de detalhes de comunicação
entre serviços
● Difícil testar escalabilidade da aplicação
Conteinerização
Conteinerização
LXC - Linux Containers:
● Jul / 2008 - Kernel 2.6.26 +
LXC - Linux Containers:
● Jul / 2008 - Kernel 2.6.26 +
● lxc-start
Conteinerização
LXC - Linux Containers:
● Jul / 2008 - Kernel 2.6.26 +
● lxc-start
● compartilha kernel e libs com o host
Conteinerização
LXC - Linux Containers:
● Jul / 2008 - Kernel 2.6.26 +
● lxc-start
● compartilha kernel e libs com o host
● isola processo nos Control Groups
(CGroups)
Conteinerização
LXC - Linux Containers:
● Jul / 2008 - Kernel 2.6.26 +
● lxc-start
● compartilha kernel e libs com o host
● isola processo nos Control Groups
(CGroups)
● difícil gerenciar
Conteinerização
Conteinerização
Docker
● Copy on Write
Conteinerização
Docker
● Copy on Write
● Compartilhamento de imagens (Docker Hub)
Conteinerização
Docker
● Copy on Write
● Compartilhamento de imagens (Docker Hub)
● Receita para criação de container
(Dockerfile)
Conteinerização
Docker
● Copy on Write
● Compartilhamento de imagens (Docker Hub)
● Receita para criação de container
(Dockerfile)
● Camada de Api REST
Conteinerização
Docker
● Copy on Write
● Compartilhamento de imagens (Docker Hub)
● Receita para criação de container
(Dockerfile)
● Camada de Api REST
● Inovando (machine, compose, swarm, etc)
Conteinerização
Conteinerização
Vantagens
● sobe muito rápido
Conteinerização
Vantagens
● sobe muito rápido
● otimiza recursos
Conteinerização
Vantagens
● sobe muito rápido
● otimiza recursos
● fácil replicação
Conteinerização
Vantagens
● sobe muito rápido
● otimiza recursos
● fácil replicação
● inovações crescentes (opencontainers.org)
Conteinerização
Desvantagens
● Overhead de IO
Conteinerização
Desvantagens
● Overhead de IO
● Não tão isolado
Conteinerização
Desvantagens
● Overhead de IO
● Não tão isolado
● Só host Linux e conteiners Linux
Conteinerização
Next Steps
● suporte ativo a freebsd
Conteinerização
Next Steps
● suporte ativo a freebsd
● mac osx e windows precisam de uma VM
linux que serve de host para os conteiners
Conteinerização
Next Steps
● suporte ativo a freebsd
● mac osx e windows precisam de uma VM
linux que serve de host para os conteiners
● problema com lentidão de leitura e
permissão de arquivos (vbox-share)
Conteinerização
Next Steps
● suporte nativo a freebsd
● mac osx e windows precisam de uma VM
linux que sirva de host para os conteiners
● problema com lentidão de leitura e
permissão de arquivos (vbox-share)
● boot2docker limitado (vbox-share e nfs)
Conteinerização
Vagrant
● suporte a docker desde 1.4.0 (dez, 2013)
Vagrant
● suporte a docker desde 1.4.0 (dez, 2013)
● suporte a rsync desde 1.5.0 (mar, 2014)
Vagrant
● suporte a docker desde 1.4.0 (dez, 2013)
● suporte a rsync desde 1.5.0 (mar, 2014)
● ajuda no problema com lentidão de leitura e
permissão de arquivos (vbox-share)
Vagrant
● suporte a docker desde 1.4.0 (dez, 2013)
● suporte a rsync desde 1.5.0 (mar, 2014)
● ajuda no problema com lentidão de leitura e
permissão de arquivos (vbox-share)
● opções de compartilhamento (vbox-share,
rsync, nfs, sbmfs)
Vagrant
● suporte a docker desde 1.4.0 (dez, 2013)
● suporte a rsync desde 1.5.0 (mar, 2014)
● ajuda no problema com lentidão de leitura e
permissão de arquivos (vbox-share)
● opções de compartilhamento (vbox-share,
rsync, nfs, sbmfs)
● Permite outras VMs (CoresOS, Ubuntu, etc)
Vagrant
Demo
A hora da tela azul...
Demo
Perguntas
http://bit.ly/talk-vagrant-docker https://joind.in/14828

Vagrant vs docker? Melhor vagrant + docker