Docker 2014 v2

2,380 views

Published on

Docker containers for Linux

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,380
On SlideShare
0
From Embeds
0
Number of Embeds
36
Actions
Shares
0
Downloads
19
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Docker 2014 v2

  1. 1. Docker Linux Containers for Dummies Gustavo Muslera Abril 2014
  2. 2. Problemas con enfoques actuales VMs ● Uso ineficiente de memoria/disco/cpu ● Compartimentar aplicaciones=más VMs ● Caches vs overcommiting ● Desarrollo+Testing+Producción=3 VMs Dedicadas ● Conflictos librerías/dependencias aplicaciones ● Seguridad de máquina=seguridad aplicación más vulnerable ● Aplicaciones dependientes de distribución ● Rearmado de entorno
  3. 3. Contenedores • "chroot en esteroides" • Aislación del sistema (propia red/procesos/usuarios/fs) • cgroups para limitar uso (cpu/red/disco/etc) • Pueden usarse para levantar aplicaciones individuales Implementaciones: • En linux: openvz, vserver, lmctfy, lxc • Otros SO tienen conceptos similares: BSD Jails, Solaris Zones Docker= containers + UnionFS + administración + extras
  4. 4. • Linux 3.8+ x86_64 • AUFS, Device Mapper, btrfs • LXC (libcontainer desde 0.9+) Distribuciones: Ubuntu, Redhat, Suse, Debian, etc Cloud: AWS, Google App Engine, Linode, Rackspace, OpenStack, etc Aplicaciones: Puppet, Chef, Ansible, Vagrant, etc Docker: Requerimientos
  5. 5. Ejemplo de sesión manual # docker pull ubuntu:12.10 # 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. 6. 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
  7. 7. Que paso en el disco? ubuntu:12.10 7717ce712162 test/mcached 66a2cbdda35d docker pull ubuntu:12.10 apt-get install memcached docker run ... Contenedores creados con diferenciales fbc9c18e0ac8 aff8363240b1 apt-get install nginx docker run -v ... ed464b61c53d docker run -v ... 27d06e9d3eea vi nginx.conf
  8. 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 varias • Se pueden tener repositorios internos con imágenes privadas
  9. 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 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, Atomic de RedHat • Flynn,Deis,Shipyard,CoreOS,Dokku, y muchos otros

×