Docker.io:
-
Upload
alexandre-teles -
Category
Documents
-
view
121 -
download
1
Transcript of Docker.io:
Introdução ao DockerSetembro, 2014
Conteúdo
• Introdução ao Docker, Containers, e a Matriz Infernal•Por que as pessoas se preocupam: Separação de Interesses•Discussão Técnica•Casos de Uso•Tópicos Avançados: Networking, Data•OpenStack•Saiba Mais
Nos 2 anos após o lançamento
• >10.561 commits• >16.186 github stars• >666 contribuidores da comunidade• >2.875 forks• Um número imenso de aplicativos
baseados em Docker • UIs, mini-PaaS, Remote Desktop….
• >2000 aplicações dockerizadas• Memcached, Redis, Node.js…e Hadoop
• Integração com Jenkins, Travis, Chef, Puppet, Vagrant, OpenStack, entre outros.
Porque todo este frenesi?
Static website
Web frontend
User DB
Queue Analytics DB
Background workers
API endpoint
nginx 1.5 + modsecurity + openssl + bootstrap 2
postgresql + pgv8 + v8
hadoop + hive + thrift + OpenJDK
Ruby + Rails + sass + Unicorn
Redis + redis-sentinel
Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs + phantomjs
Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client
Development VM
QA server
Public Cloud
Disaster recovery
Contributor’s laptop
Production Servers
O DesafioM
ult
iplic
ity
of
Stac
ksM
ult
iplic
ity
of
har
dw
are
envi
ron
men
ts
Production Cluster
Customer Data Center
Do
services and
app
s in
teract ap
pro
priately?
Can
I migrate
smo
oth
ly and
q
uickly?
A Matriz Infernal
Static website
Web frontend
Background workers
User DB
Analytics DB
Queue
Development VM QA Server Single Prod
Server Onsite Cluster Public Cloud Contributor’s laptop
Customer Servers
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
Mu
ltip
licit
y o
f G
oo
ds
Mu
ltip
ilici
ty o
f m
eth
od
s fo
r tr
ansp
ort
ing/
sto
rin
g
Do
I wo
rry abo
ut
ho
w go
od
s interact
(e.g. coffee b
eans
next to
spices)
Can
I transp
ort q
uickly
and
smo
oth
ly(e.g. fro
m b
oat to
train
to tru
ck)
O transporte de cargas Pré-1960
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
Também uma Matriz Infernal
Mu
ltip
licit
y o
f G
oo
ds
Mu
ltip
licit
y o
f m
eth
od
s fo
r tr
ansp
ort
ing/
sto
rin
g
Do
I wo
rry abo
ut
ho
w go
od
s interact
(e.g. coffee b
eans
next to
spices)
Can
I transp
ort
qu
ickly and
smo
oth
ly(e.g. fro
m b
oat to
train
to tru
ck)
Solução: Envio Intermodal em Containers
...no caminho , podem ser carregados e descarregados, empilhados, transportados de forma eficiente em longas distâncias, e transferidos de um meio de transporte para outro.
Um contêiner padrão que é carregado com praticamente todos os bens, e permanece fechado até que ele atinja a entrega final.
Static website Web frontend User DB Queue Analytics DB
Development VM
QA server Public Cloud Contributor’s laptop
Docker é um sistema de containers para código!M
ult
iplic
ity
of
Stac
ksM
ult
iplic
ity
of
har
dw
are
envi
ron
men
ts
Production Cluster
Customer Data Center
Do
services and
app
s in
teract ap
pro
priately?
Can
I migrate
smo
oth
ly and
qu
ickly
...que pode ser manipulado através de operações-padrão e executar de forma consistente em praticamente qualquer plataforma de hardware.
Uma engine que permite que qualquer carga útil venha a ser encapsulada como um recipiente auto-suficiente leve, portátil...
Static website
Web frontend
Background workers
User DB
Analytics DB
Queue
Development VM QA Server Single Prod
Server Onsite Cluster Public Cloud Contributor’s laptop
Customer Servers
Docker elimina a Matriz Infernal!
Porque os Desenvolvedores se importam
• Faça o build uma vez e…(finalmente) rode em qualquer lugar*• Um ambiente execução limpo, seguro, higiênico e portátil para o seu aplicativo.• Sem preocupações com falta de dependências, pacotes e outros pontos de dor durante as
implantações subsequentes.• Execute cada aplicativo em seu próprio container, assim você pode executar várias versões de
bibliotecas e outras dependências para cada aplicação sem se preocupar.• Automatizar testes, integração, packaging... você pode fazer um script para qualquer coisa. • Reduzir/eliminar as preocupações sobre compatibilidade em diferentes plataformas, suas ou
de seus clientes. • Cheap, zero-penalty containers to deploy services? A VM without the overhead of a VM?
Instant replay and reset of image snapshots? That’s the power of Docker
Porque os operadores de infraestrutura se importam•Configure uma vez… rode qualquer coisa
• Faça todo o ciclo de vida de uma aplicação mais eficiente, consistente e repetível.• Aumentar a qualidade do código produzido pelos desenvolvedores. • Eliminar inconsistências entre desenvolvimento, teste, produção e ambientes de clientes.• Suporte a segregação de funções.• Melhora significativamente a velocidade e a confiabilidade da implantação contínua e dos
sistemas de integração contínua.• Porque os recipientes são tão leves, tem o potencial de solucionar os problemas de
desempenho, os custos, a implantação e problemas de portabilidade normalmente associados com VMs.
Porque funciona - separação de interesses
• Zé, o Desenvolvedor• Se preocupa com o que está dentro
do container:• O Código
• As Bibliotecas
• O Gerenciador de Pacotes
• As Aplicações
• Os Dados
• Todos os servidores Linux parecem ser o mesmo.
• Jão, o Operador• Se preocupa com o que está
fora do container• Logging• Acesso Remoto• Monitoramento• Network config
• Todos os containers start, stop, copy, attach, migrate, etc. da mesma forma.
Mais explicações técnicas
• High Level - É uma VM leve• Espaço de processos próprio• Network própria• Pode executar coisas como root• Pode ter seu próprio /sbin/init
(separado do host)• <<machine container>>
• Low Level - chroot com esteróides• Pode também não ter seu próprio
/sbin/init• Container=processos isolados• Compartilha o kernel com o host• Sem emulação de dispositivos
(nem HVM nem PV) do host)• <<application container>>
• Roda em qualquer lugar• Independete da versão do kernel
(2.6.32+)• Independente da distro do host• Físico ou virtual, cloud ou não
• Roda qualquer coisa• Se alguma coisa roda no host,
rodará no container• i.e. se alguma coisa roda no Linux,
rodará no container.
PORQUE O QUE
AppA
Containers vs. VMs
Hypervisor (Type 2)
Host OS
Server
GuestOS
Bins/Libs
AppA’
GuestOS
Bins/Libs
AppB
GuestOS
Bins/Libs
Ap
p A
’
Do
cker
Host OS
Server
Bins/Libs
Ap
p A
Bins/Libs
Ap
p B
Ap
p B
’
Ap
p B
’
Ap
p B
’VM
Container
Containers são isolados,mas compartilham o OS e, quandoappropriate, bins/libraries
GuestOS
GuestOS
...o que resulta em implementação significativamente mais rápida, muito menos sobrecarga, migração mais fácil, restart mais rápido
Porque os containers do Docker são leves?
Bins/Libs
AppA
Original App(No OS to takeup space, resources,or require restart)
Ap
p Δ
Bin
s/
AppA
Bins/Libs
AppA’
GuestOS
Bins/Libs
Modified App
Copy on write capabilities allowus to only save the diffsBetween container A and containerA’
VMsEvery app, every copy of anapp, and every slight modificationof the app requires a new virtual server
AppA
GuestOS
Bins/Libs
Copy ofApp
No OS. CanShare bins/libs
AppA
GuestOS
GuestOS
VMs Containers
Quais os princípios básicos doDocker?
Source Code
Repository
DockerfileFor A
Docker Engine
DockerContainer
Image Registry
Build
Do
cker
Host 2 OS (Linux)
Co
ntain
er A
Co
ntain
er B
Co
ntain
er C
Co
ntain
er A
Push
SearchPull
Run
Host 1 OS (Linux)
Mudanças e Atualizações
Docker Engine
DockerContainer
Image Registry
Docker Engine
Push
Update
Bins/Libs
AppA
Ap
p Δ
Bin
s/
Base Container
Image
Host is now running A’’
Container Mod A’’
Ap
p Δ
Bin
s/
Bins/Libs
AppA
Bin
s/
Bins/Libs
AppA’’
Host running A wants to upgrade to A’’. Requests update. Gets only diffs
Container Mod A’
Casos de Uso
• Ted Dziuba sobre o Uso de Docker para integração contínua no Ebay• https://speakerdeck.com/teddziuba/docker-at-ebay• http://www.youtube.com/watch?feature=player_embedded&v=0Hi0W4gX--4
• Sasha Klizhentas sobre o uso do Docker no Mailgun da Rackspace• http://www.youtube.com/watch?feature=player_embedded&v=CMC3xdAo9RI
• Sebastien Pahl sobre o uso do Docker na CloudFlare• http://www.youtube.com/watch?feature=player_embedded&v=-Lj3jt_-3r0
• Cambridge HealthCare• http://blog.howareyou.com/post/62157486858/continuous-delivery-with-docker-and-jenkins-
part-i
• Red Hat Openshift and Docker• https://www.openshift.com/blogs/technical-thoughts-on-openshift-and-docker
Casos de Uso - Na ComunidadeUse Case Examples LinkClusters Building a MongoDB cluster using docker http://bit.ly/1acbjZf
Production Quality MongoDB Setup with Docker http://bit.ly/15CaiHbWildfly cluster using Docker on Fedora http://bit.ly/1bClX0O
Build your own PaaS OpenSource PaaS built on Docker, Chef, and Heroku Buildpacks http://deis.io
Web Based Environment for Instruction
JiffyLab – web based environment for the instruction, or lightweight use of, Python and UNIX shell
http://bit.ly/12oaj2K
Easy Application Deployment
Deploy Java Apps With Docker = Awesome http://bit.ly/11BCvvuHow to put your development environment on docker http://bit.ly/1b4XtJ3Running Drupal on Docker http://bit.ly/15MJS6BInstalling Redis on Docker http://bit.ly/16EWOKh
Create Secure Sandboxes Docker makes creating secure sandboxes easier than ever http://bit.ly/13mZGJH
Create your own SaaS Memcached as a Service http://bit.ly/11nL8vhAutomated Application Deployment
Multi-cloud Deployment with Docker http://bit.ly/1bF3CN6
Continuous Integration and Deployment
Next Generation Continuous Integration & Deployment with dotCloud’s Docker and Strider
http://bit.ly/ZwTfoy
Testing Salt States Rapidly With Docker http://bit.ly/1eFBtcm
Lightweight Desktop Virtualization
Docker Desktop: Your Desktop Over SSH Running Inside Of A Docker Container
http://bit.ly/14RYL6x
Advanced topics
• Data• Today: Externally mounted volumes
• Share volumes between containers• Share volume between a containers and underlying hosts
• high-performance storage backend for your production database• making live development changes available to a container, etc.
• Optional: specify memory limit for containers, CPU priority• Device mapper/ LVM snapshots in 0.7
• Futures:• I/O limits• Container resource monitoring (CPU & memory usage)• Orchestration (linking & synchronization between containers)• Cluster orchestration (multi-host environment)
• Networking• Supported today:
• UDP/TCP port allocation to containers• specify which public port to redirect. If you don’t specify a public port, Docker will revert to allocating a random public port.• Docker uses IPtables/netfilter
• IP allocation to containers• Docker uses virtual interfaces, network bridge,
• Futures:• See Pipework (Upstream) : Software-Defined Networking for Linux Containers (https://github.com/jpetazzo/pipework)• Certain pipework concepts will move from upstream to part of core Docker• Additional capabilities come with libvirt support in 0.8-0.9 timeframe
OpenStack / DockerNew hypervisor to enable Nova to deploy Linux containers
Porque Docker + OpenStack
•Alternativa para as VMs presentes na OpenStack (hoje)• Implantação mais fácil da OpenStack (hoje)• Implantação de aplicativos em cross cloud.•Orquestração de containers com OpenStack Heat
Quer aprender mais?
•www.docker.io:• Documentação• Introdução: tutorial interativo, instruções de instalação, guia de iniciação,• Sobre: Whitepaper Introdutória: http://www.docker.io/the-whole-story/
•Github: dotcloud/docker• IRC: freenode/#docker•Google groups: groups.google.com/forum/#!forum/docker-user•Twitter: follow @docker• Meetups: https://www.docker.io/meetups/• Através de mim: Alexandre Teles ([email protected])
www.docker.io