Post on 01-Dec-2014
description
Docker, el futuro de la distribución de aplicaciones.
● Socio Fundador de QuaiP.com
● VoipEngineer con Asterisk / Kamailio.
● SysOp Linux.
● Formador online de Asterisk, Virtualizacion y Linux.
David Muñoz - @dperilla
● Desarrollo e infraestructuras avanzadas de VoIP.
● Servidores de streaming de radio y TV.
● Web Hosting Avanzado, VPS y Servidores Dedicados.
DEVOPS SYSOPS
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
El Reto:M
ult
iplic
ity
of
Stac
ks
Mu
ltip
licit
y o
f h
ard
war
e en
viro
nm
ents
Production Cluster
Customer Data Center
Do
services and
ap
ps in
teract ap
pro
priately?
Can
I migrate
smo
oth
ly and
q
uickly?
La pesadilla de la compatibilidad NxN
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
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
Una analogía simple...
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
También es una matriz NxN
Mú
ltip
les
bie
nes
Mú
ltip
les
mét
od
os
de
tran
spo
rte
y d
e al
mac
enam
ien
to
Preocu
pació
n so
bre
cóm
o in
teractúan
los
bien
es (Ej.: Gran
os
de café y Esp
ecias ju
nto
s)
El transp
orte es
rápid
o y sen
cillo (d
el B
arco a la grú
a, qu
e lo
pasa al cam
ión
,...)
¿La solución? El transporte en contenedores
De esta forma podemos cargar, descargar, apilar y transportar el container largas distancias facilitando el transbordo de un medio de transporte a otro.
Un contenedor estándar que carga cualquier tipo de bien y que permanece cerrado hasta llegar a su destino.
Estamos eliminando el problema de la matriz NxN
Y así apareció el Sistema Intermodal de Transporte de Contenedores
• Actualmente, el 90% de todas las mercancías en barco se envían en contenedores estándar.• Se ha reducido en orden de magnitud el coste y el tiempo de carga/descarga de los barcos.• Reducción masiva de las pérdidas por robos de las mercancías o daños.• Enorme reducción del coste de los productos finales (de más del 25% a menos del 3%).• Globalización masiva del transporte de mercancías.• Más de 5.000 barcos en todo el mundo transportan 200M de contenedores al año.
La Solución de Docker
Static website Web frontend User DB Queue Analytics DB
VMsQA Server Cloud Público Laptop
Docker es un sistema de transporte de contenedores para código
Mú
ltip
les
stac
ksM
últ
iple
s en
torn
os
har
dw
are
Clúster enproducción
Data Center para Clientes
¿Los servicio
s y las A
pp
s interactú
an d
e la fo
rma ad
ecuad
a?
¿Pued
o m
igrar ráp
idam
ente y sin
p
rob
lemas?
… de forma que se pueda manipular mediante operaciones estándar y ejecutar de manera consistente en cualquier hardware.
Docker es un motor que permite que encapsular cualquier información y hacerla portátil, autosuficiente y ligera
Static website Web frontend User DB Queue Analytics DB
VMsQA Server Cloud Público Laptop
Or... put more simplyM
últ
iple
s st
acks
Mú
ltip
les
ento
rno
s h
ard
war
e
Clúster enproducción
Data Center para Clientes
¿Los servicio
s y las A
pp
s interactú
an d
e la fo
rma ad
ecuad
a?
¿Pued
o m
igrar ráp
idam
ente y sin
p
rob
lemas?
DevOps: “Crea una vez y ejecútalo donde quieras”.
SysOps: “Configúralo una vez y ejecútalo donde quieras”.
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 soluciona el problema de la matriz NXN
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
Los Containers están aislados pero comparten un mismo SO y, cuando pueden, binarios y/o librerías.
GuestOS
GuestOS
¿Por qué son tan ligeros los Containers con Docker?
Bins/Libs
AppA
Aplicación Original
No hace falta coger espacio ni recursos del OS, tampoco hay necesidad de reiniciar el sistema.
Ap
p Δ
Bin
s/
AppA
Bins/Libs
AppA’
GuestOS
Bins/Libs
Modificación de la Aplicación
El sistema de unión de ficheros nos permite tener que guardar sólo los cambios entre un container A y un container A’.
VMsTodas las aplicaciones, cada copia de cada aplicación, e incluso cada modificación de una aplicación requiere un nuevo servidor virtual!
AppA
GuestOS
Bins/Libs
Copia de la Aplicación
No hay OS y se pueden compartir binarios y/o librerías.
AppA
GuestOS
GuestOS
VMs Containers
Ejemplo de fichero con Docker# Nginx
#
# VERSION 0.0.1
FROM ubuntu
MAINTAINER Guillaume J. Charmes <guillaume@dotcloud.com>
# make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.
list
RUN apt-get update
RUN apt-get install -y inotify-tools nginx apache2 openssh-server
¿Cuáles son los elementos básicos de Docker?
Source Code
Repository
DockerfileFor A
Docker Engine
DockerContainer
Image Registry
Build
Do
cker
Host 2 OS 2 (Linux)
Co
ntain
er A
Co
ntain
er B
Co
ntain
er C
Co
ntain
er A
Push
SearchPull
Run
Host 1 OS (Linux)
Cambios y actualizaciones
Docker Engine
DockerContainer
Image Registry
Docker Engine
Push
Update
Bins/Libs
AppA
Ap
p Δ
Bin
s/
Base Container
Image
Ahora el host está corriendo con A’’
Container Mod A’’
Ap
p Δ
Bin
s/
Bins/Libs
AppA
Bin
s/
Bins/Libs
AppA’’
Host ejecutando A quiere upgradearse a A’’. Solicita la actualización. Obtiene sólo la diferencia.
Container Mod A’
Casos de usosUse Case Examples LinkBuild your own PaaS Dokku - Docker powered mini-Heroku. The smallest PaaS implementation you’ve ever seen http://bit.ly/191Tgsx
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/11BCvvu
Running 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
Push-button Deployment with Docker http://bit.ly/1bTKZTo
Continuous Integration and Deployment
Next Generation Continuous Integration & Deployment with dotCloud’s Docker and Strider http://bit.ly/ZwTfoy
Lightweight Desktop Virtualization
Docker Desktop: Your Desktop Over SSH Running Inside Of A Docker Container
http://bit.ly/14RYL6x
¡¡Muchas gracias!!
a Diego Castillo @dcastillobarnesSergio Gómez @sergiogomez
José Ramón Albendín @jralbendin
y por supuestoA TODOS VOSOTROS
Preguntas?