SlideShare una empresa de Scribd logo
1 de 9
Docker
Linux Containers for Dummies
Gustavo Muslera
Marzo 2014
Problemas con enfoques actuales
● Conflictos en librerías/aplicaciones: Servicio A requiere X 0.95,
servicio B requiere X 1.03, para que convivan en un mismo
hardware/vm hay que hacer trucos
● Implicaciones de seguridad de muchas aplicaciones conviviendo en
un mismo hardware/vm
● VMs cargan sistema completo, requieren uso extra de memoria, cpu,
disco, a veces bastante importante
● Cache de disco en VMs afecta overcommiting para otras VMs, pero
no tener cache de disco afecta negativamente performance
● Testing de aplicaciones implica replicación de máquinas completas.
Es “caro” tener para cada desarrollador un ambiente idéntico al de
producción. Desarrollo/testing/producción deberían ser lo mas
parecido posible
● Alta disponibilidad implica mover/cargar VMs completas por la red
● Costos extras (mas máquinas) en nubes si se quieren compartimentar
aplicaciones
● Algunos paquetes/versiones estan para una distribución y no para
otras. Instalarlos implica instalar de fuente o crear nueva vm/maquina
• "chroot en esteroides"
• aislacion de procesos del resto del sistema, su propia
red, procesos, usuarios, y filesystem
• cgroups para limitar uso de recursos del sistema
(cpu/red/disco/etc)
• Pueden usarse para levantar aplicaciones individuales
en sistemas restringidos, sin cargar sistemas
completos. Pueden verse como contenedores (de
puerto) que llevan dentro la aplicación independiente
completa.
• En linux: openvz, vserver, lmctfy, lxc
• Otros SO tienen conceptos similares: BSD Jails, Solaris
Zones
Containers
• Originalmente: Linux 3.8+, aufs, lxc y 64 bits. Ubuntu
12.04 y 13.04 eran las distribuciones oficiales, pero
corría en debian, suse, y muchos “clouds”
• En 0.7 soporto storage drivers, agregando device
mapper/btrfs/vfs. Se agrega RHEL 6.5 (y centos,
fedora, etc) que no tenía soporte aufs.
• En 0.8 “soporta” OS X, corriendo linux en una vm
liviana y comunicándose con el docker del vm
• En 0.9 agregaron soporte de drivers de ejecución,
podría andar con openvz, bsd jails, solaris zones,
chroot, qemu y otros. Y libcontainer, para hablar
directamente con el kernel, ya no es obligatorio lxc.
Docker: Requerimientos
Ejemplo de sesión manual
# docker pull base
# docker run -i -t base /bin/bash
root@15c0db264611:/# apt-get install memcached
root@15c0db264611:/# exit
# docker ps -a
ID IMAGE COMMAND CREATED STATUS PORTS
7717ce712162 base:latest /bin/bash 2 minutes ago Exit 0
# docker commit 7717ce712162 test/mcached
# docker run -d -p 11211 test/mcached memcached -u daemon
# docker ps
ID IMAGE COMMAND CREATED STATUS PORTS
66a2cbdda35d test/mcached:latest memcached -u daemon 3 minutes ago Up 3 minutes 49153->11211
Que paso en el disco?
base
7717ce712162
test/mcached
66a2cbdda35d
docker pull base
apt-get install memcached
docker run ...
Contenedores creados
fbc9c18e0ac8
aff8363240b1 apt-get install nginx
docker run -v ...
ed464b61c53d
docker run -v ...
27d06e9d3eea
vi nginx.conf
Docker builder
# Dockerfile para nginx + php-fpm
FROM ubuntu:12.10
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" >
/etc/apt/sources.list.d/precise.list && apt-get update
RUN apt-get install -y nginx php5-fpm php5-pgsql php5-curl php5-json php-apc
RUN echo "cgi.fix_pathinfo = 0;" >> /etc/php5/fpm/php.ini
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
ADD ./nginx-site.conf /etc/nginx/sites-available/default
EXPOSE 80
CMD service php5-fpm start && nginx
docker build nginxphp/ (subdirectorio con archivo Dockerfile + extras)
Va a ejecutar paso por paso el script, y tirar a consola el id de la imagen generada, similar a receta de
puppet o vagrant
docker run -d -p 8080:80 -v=/sitios/nginxphp-www:/usr/share/nginx/www nginxphp
Repositorio central
• Almacen de imágenes ya hechas, base, ubuntu, centos,
logstash, mongodb, etc
• Motor de busqueda en http://index.docker.io
• comandos docker pull imágenes, login para
autenticación y push de imagenes, search para buscar
• APIs para acceder al index server (donde esta la
búsqueda, metadatos, usuarios, etc) y al registry server
(donde estan las imagenes)
• Se pueden tener repositorios internos
Administración avanzada
• Remote API: Escucha por defecto en puerto 4243,
invocaciones tipo POST /images/(nombre)/comando, con
librerías existentes para python, ruby, js, java, php, go
• Varias WebUI simples, p/ej en
https://github.com/crosbymichael/dockerui
• Integración con OpenStack. Empezó siendo driver de
Nova pero para la siguiente versión lo es de Heat, el
orquestador de servicios
• Integración con OpenShift de RedHat
• Flynn,Deis,Shipyard,CoreOS,Dokku, y muchos otros

Más contenido relacionado

La actualidad más candente

Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
Gustavo Andres Brey
 

La actualidad más candente (20)

Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
Divide y vencerás con docker y core os
Divide y vencerás con docker y core osDivide y vencerás con docker y core os
Divide y vencerás con docker y core os
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Presentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarmPresentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarm
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Solapas principales Ver(solapa activa) Editar Gestionar present...
 Solapas principales      Ver(solapa activa)     Editar     Gestionar present... Solapas principales      Ver(solapa activa)     Editar     Gestionar present...
Solapas principales Ver(solapa activa) Editar Gestionar present...
 
Fury - Docker Meetup
Fury - Docker MeetupFury - Docker Meetup
Fury - Docker Meetup
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Kubernetes: Caso de uso real con mememtum y Taniwa
Kubernetes: Caso de uso real con mememtum y TaniwaKubernetes: Caso de uso real con mememtum y Taniwa
Kubernetes: Caso de uso real con mememtum y Taniwa
 
Docker 2014 v2
Docker 2014 v2Docker 2014 v2
Docker 2014 v2
 

Destacado

Contenedores o containers
Contenedores o containersContenedores o containers
Contenedores o containers
andresgaravito
 

Destacado (16)

Devopsconf2015- Marcos y Jonathan Mantika
Devopsconf2015- Marcos y Jonathan MantikaDevopsconf2015- Marcos y Jonathan Mantika
Devopsconf2015- Marcos y Jonathan Mantika
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
 
Microservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMwareMicroservicios sobre tecnologías Pivotal y VMware
Microservicios sobre tecnologías Pivotal y VMware
 
Virtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioVirtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novio
 
Contenedores o containers
Contenedores o containersContenedores o containers
Contenedores o containers
 
Docker: Why containers are our new friends?
Docker: Why containers are our new friends?Docker: Why containers are our new friends?
Docker: Why containers are our new friends?
 
Sandbox para ejercicios de programación
Sandbox para ejercicios de programaciónSandbox para ejercicios de programación
Sandbox para ejercicios de programación
 
Implementando una Arquitectura de Microservicios
Implementando una Arquitectura de MicroserviciosImplementando una Arquitectura de Microservicios
Implementando una Arquitectura de Microservicios
 
Arquitecturas de microservicios - Codemotion 2014
Arquitecturas de microservicios  -  Codemotion 2014Arquitecturas de microservicios  -  Codemotion 2014
Arquitecturas de microservicios - Codemotion 2014
 
Deploying Containers with Rancher
Deploying Containers with RancherDeploying Containers with Rancher
Deploying Containers with Rancher
 
Docker at Flux7
Docker at Flux7Docker at Flux7
Docker at Flux7
 
Virtualizacion De Servidores (Open Source)
Virtualizacion De Servidores (Open Source)Virtualizacion De Servidores (Open Source)
Virtualizacion De Servidores (Open Source)
 
Usando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskUsando Docker con sistemas Asterisk
Usando Docker con sistemas Asterisk
 
WTF Is Rancher?
WTF Is Rancher?WTF Is Rancher?
WTF Is Rancher?
 
Intro to Docker and clustering with Rancher from scratch
Intro to Docker and clustering with Rancher from scratchIntro to Docker and clustering with Rancher from scratch
Intro to Docker and clustering with Rancher from scratch
 
Cloud + Docker - La arquitectura MELI usando AWS en la nube.
Cloud + Docker - La arquitectura MELI usando AWS en la nube.Cloud + Docker - La arquitectura MELI usando AWS en la nube.
Cloud + Docker - La arquitectura MELI usando AWS en la nube.
 

Similar a Presentación Docker

Manejo de sistemas operativos en power point
Manejo de sistemas operativos en power point Manejo de sistemas operativos en power point
Manejo de sistemas operativos en power point
Montse Perez
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfecto
betabeers
 

Similar a Presentación Docker (20)

Docker en el entorno de desarrollo
Docker en el entorno de desarrolloDocker en el entorno de desarrollo
Docker en el entorno de desarrollo
 
Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a Ansible
 
Virtualización con Xen
Virtualización con XenVirtualización con Xen
Virtualización con Xen
 
Genesis Campos
Genesis CamposGenesis Campos
Genesis Campos
 
Open Build Service
Open Build ServiceOpen Build Service
Open Build Service
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 
Manejo de sistemas operativos en power point
Manejo de sistemas operativos en power point Manejo de sistemas operativos en power point
Manejo de sistemas operativos en power point
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfecto
 
Slackware
SlackwareSlackware
Slackware
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 
Unix JCRB
Unix JCRBUnix JCRB
Unix JCRB
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)
 
Julissa
JulissaJulissa
Julissa
 
Julissa
JulissaJulissa
Julissa
 
todo sobre linux
todo sobre linuxtodo sobre linux
todo sobre linux
 
Ambar galeas
Ambar galeasAmbar galeas
Ambar galeas
 
Interchange CMS - e-commerce
Interchange CMS - e-commerceInterchange CMS - e-commerce
Interchange CMS - e-commerce
 
Interchange How-To for Red Hat Linux ES4
Interchange How-To for Red Hat Linux ES4Interchange How-To for Red Hat Linux ES4
Interchange How-To for Red Hat Linux ES4
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (15)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

Presentación Docker

  • 1. Docker Linux Containers for Dummies Gustavo Muslera Marzo 2014
  • 2. Problemas con enfoques actuales ● Conflictos en librerías/aplicaciones: Servicio A requiere X 0.95, servicio B requiere X 1.03, para que convivan en un mismo hardware/vm hay que hacer trucos ● Implicaciones de seguridad de muchas aplicaciones conviviendo en un mismo hardware/vm ● VMs cargan sistema completo, requieren uso extra de memoria, cpu, disco, a veces bastante importante ● Cache de disco en VMs afecta overcommiting para otras VMs, pero no tener cache de disco afecta negativamente performance ● Testing de aplicaciones implica replicación de máquinas completas. Es “caro” tener para cada desarrollador un ambiente idéntico al de producción. Desarrollo/testing/producción deberían ser lo mas parecido posible ● Alta disponibilidad implica mover/cargar VMs completas por la red ● Costos extras (mas máquinas) en nubes si se quieren compartimentar aplicaciones ● Algunos paquetes/versiones estan para una distribución y no para otras. Instalarlos implica instalar de fuente o crear nueva vm/maquina
  • 3. • "chroot en esteroides" • aislacion de procesos del resto del sistema, su propia red, procesos, usuarios, y filesystem • cgroups para limitar uso de recursos del sistema (cpu/red/disco/etc) • Pueden usarse para levantar aplicaciones individuales en sistemas restringidos, sin cargar sistemas completos. Pueden verse como contenedores (de puerto) que llevan dentro la aplicación independiente completa. • En linux: openvz, vserver, lmctfy, lxc • Otros SO tienen conceptos similares: BSD Jails, Solaris Zones Containers
  • 4. • Originalmente: Linux 3.8+, aufs, lxc y 64 bits. Ubuntu 12.04 y 13.04 eran las distribuciones oficiales, pero corría en debian, suse, y muchos “clouds” • En 0.7 soporto storage drivers, agregando device mapper/btrfs/vfs. Se agrega RHEL 6.5 (y centos, fedora, etc) que no tenía soporte aufs. • En 0.8 “soporta” OS X, corriendo linux en una vm liviana y comunicándose con el docker del vm • En 0.9 agregaron soporte de drivers de ejecución, podría andar con openvz, bsd jails, solaris zones, chroot, qemu y otros. Y libcontainer, para hablar directamente con el kernel, ya no es obligatorio lxc. Docker: Requerimientos
  • 5. Ejemplo de sesión manual # docker pull base # docker run -i -t base /bin/bash root@15c0db264611:/# apt-get install memcached root@15c0db264611:/# exit # docker ps -a ID IMAGE COMMAND CREATED STATUS PORTS 7717ce712162 base:latest /bin/bash 2 minutes ago Exit 0 # docker commit 7717ce712162 test/mcached # docker run -d -p 11211 test/mcached memcached -u daemon # docker ps ID IMAGE COMMAND CREATED STATUS PORTS 66a2cbdda35d test/mcached:latest memcached -u daemon 3 minutes ago Up 3 minutes 49153->11211
  • 6. Que paso en el disco? base 7717ce712162 test/mcached 66a2cbdda35d docker pull base apt-get install memcached docker run ... Contenedores creados fbc9c18e0ac8 aff8363240b1 apt-get install nginx docker run -v ... ed464b61c53d docker run -v ... 27d06e9d3eea vi nginx.conf
  • 7. Docker builder # Dockerfile para nginx + php-fpm FROM ubuntu:12.10 RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list.d/precise.list && apt-get update RUN apt-get install -y nginx php5-fpm php5-pgsql php5-curl php5-json php-apc RUN echo "cgi.fix_pathinfo = 0;" >> /etc/php5/fpm/php.ini RUN echo "daemon off;" >> /etc/nginx/nginx.conf ADD ./nginx-site.conf /etc/nginx/sites-available/default EXPOSE 80 CMD service php5-fpm start && nginx docker build nginxphp/ (subdirectorio con archivo Dockerfile + extras) Va a ejecutar paso por paso el script, y tirar a consola el id de la imagen generada, similar a receta de puppet o vagrant docker run -d -p 8080:80 -v=/sitios/nginxphp-www:/usr/share/nginx/www nginxphp
  • 8. Repositorio central • Almacen de imágenes ya hechas, base, ubuntu, centos, logstash, mongodb, etc • Motor de busqueda en http://index.docker.io • comandos docker pull imágenes, login para autenticación y push de imagenes, search para buscar • APIs para acceder al index server (donde esta la búsqueda, metadatos, usuarios, etc) y al registry server (donde estan las imagenes) • Se pueden tener repositorios internos
  • 9. Administración avanzada • Remote API: Escucha por defecto en puerto 4243, invocaciones tipo POST /images/(nombre)/comando, con librerías existentes para python, ruby, js, java, php, go • Varias WebUI simples, p/ej en https://github.com/crosbymichael/dockerui • Integración con OpenStack. Empezó siendo driver de Nova pero para la siguiente versión lo es de Heat, el orquestador de servicios • Integración con OpenShift de RedHat • Flynn,Deis,Shipyard,CoreOS,Dokku, y muchos otros