Introducción a Docker para torpes

Desde hace tiempo que no para de escuchar la palabra Docker, y hoy me he dispuesto a investigar un poco para sacar algo en claro. Se trata de un proyecto open source, donde colaboran múltiples actores, desde la Linux Foundation, desarrolladores de todo el mundo y una larga lista de empresas, que tiene por fin automatizar el despliegue de aplicaciones dentro de contenedores.

Así a primeras suena bien, pero vamos a intentar explicarlo un poco mejor.

Docker-logo-011

¿Qué es Docker?

Se refiere a todo aquello que facilita la creación, implementación y ejecución de aplicaciones mediante el uso de contendores. Dichos contenedores permiten a un desarrollador empaquetar un aplicación con todas las partes que necesita, es decir, bibliotecas y dependencias, y usarlo todo como si fuera un sólo paquete. De ésta manera dicha aplicación se podrá utilizar en cualquier distribución GNU Linux, independientemente de la configuración que tenga dicho sistema. Para simplificar podríamos decir que funciona igual que las máquinas virtuales, pero a diferencia de éstas, las aplicaciones utilizan el mismo kernel que la distribución. De ésta manera se garantiza el buen rendimiento y el buen uso de recursos por parte de la aplicación.

Además es open source. Por lo tanto cualquier desarrolador con conocimientos técnicos puede introducir mejoras o adaptarlo según sus necesidades.

Explicame más

Docker implementa una API de alto nivel, para así proporcionar contenedores ligeros que ejecutan los procesos de manera aislada, basándose en el núcleo o kernel del sistema. Se basa en la funcionalidad del núcleo y utiliza aislamiento de recursos (CPU, memoria, etcétera) y los espacios de nombres por separado, para aislar así la aplicación. Otra características importante es que accede a la virtualización del kernel de linux, a través de la biblioteca libcontainer , indectamente a través de libvirt, LXC o nspawn systemd.

Mediante este sistema los recursos pueden ser aislados, los servicios restringidos. Los contenedores múltiples pueden compartir el mismo núcleo, pero se puede limitar la cantidad de su uso (CPU, memoria y E/S)

Docker-linux-interfaces.svg

«Docker-linux-interfaces» by User:Maklaan – Based on a Docker blog post. Licensed under Public Domain via Wikimedia Commons.

Posibles usos para Docker

Se pueden aprovechar de ésta tecnología tanto administradores de sistemas como desarrolladores. Por la parte de los que «pican código» les facilita que no tienen que adaptar sus aplicaciones, ya que dentro de los contenedores funcionarán en todas las distribuciones. El añadido que ya se dispone de una larga lista de aplicaciones pensandas para contenedores. En la parte de sistemas, se reduce drásticamente el número de máquinas, virtuales o físicas, necesarias para utilizar dichas aplicaciones.

Algunos ejemplos

Permite la plataforma como servicio (PaaS), la aplicación de los sistemas como Apache Cassandra, MongoDB o Riak.

¿Por donde empiezo?

El proyecto Docker nos facilita un tutorial en inglés, basado en la web, para empezar, donde podremos utilizar una línea de comandos y así ver cómo funciona. También está disponible una guía en inglés para principiantes.

Podemos ver el siguiente vídeo:

Fuentes:

opensource.com

Wikipedia

See you soon!!

13 Respuestas

  1. JZA dice:

    Yo conoci docker desde que salio, mi podcast de linux favorito, tuvieron a los creadores en una muy interesante entrevista que igual puede darle mucha informacion sobre como es que esta empresa coincibio la idea y la volvio un super proyecto.

  2. Iván Barra dice:

    Pero esto sería como se instalan las aplicaciones en Windows, es decir, aunque una librería específica ya existe, si otro programa que funciona como docker, la trae nuevamente, la volverá a instalar? no sería de alguna forma «contraproducente», dado el aumento de espacio en la instalación de aplicaciones??

    Me queda esa duda.

    Saludos.

    • davidochobits dice:

      Hola Iván,
      Por lo que yo entiendo ‘docker’ utiliza la tecnología de virtualización para meter en un contenedor el programa referido más sus librerias y dependencias, generalmente servicios, como bases de datos o servidores web, que mediante librerías de virtualización como ‘libvirt’ se conectan con el kernel del sistema operativo. Es genial, de ésta manera quedan los servicios aislados, si diesen fallos, no afectarían al resto del sistema.
      Saludos!

  3. Liher dice:

    Hola David, habia oido hablar en muchas ocasiones de Docker pero no sabia exactamente lo que era, muchas gracias por el articulo, es genial. Ahora ya se de que va, un saludo colega

  4. JZA dice:

    Recomiendo este video ya que el usuario tiene otro OS es facil percibir cuando estas en docker y cuando en tu sistema:

  1. 7 abril, 2015

    […] spanshots del sistema de ficheros de manera fácil. También incluye como novedad importante docker y soporte para virtualización con sistemas XEN y KVM. Otro cambio importante respecto a su […]

  2. 21 abril, 2015

    […] tiene como objetivo permitir una nueva era en las aplicaciones en la nube. En su día hablamos de Docker, otro modelo de contenedores  impulsado por muchos actores, entre los que se encuentra la Linux […]

  3. 23 julio, 2015

    […] Se trata de una plataforma abierta, destinada a la construcción, el transporte y la ejecución de aplicaciones distribuidas. Quizás éste definición deje a muchos con la misma pregunta sin resolver. Definiendo aún más podríamos decir que se refiere a todo aquello que facilita la creación, implementación y ejecución de aplicaciones mediante el uso de contenedores. Dichos contenedores permiten a un desarrollador empaquetar un aplicación con todas las partes que necesita, es decir, bibliotecas y dependencias, y usarlo todo como si fuera un sólo paquete. Simplificando aún más, si conocemos un poco el mundo de las máquinas virtuales, los contenedores funcionan de manera parecida, la diferencia es que utilizan el mismo núcleo o kernel del sistema operativo huésped. De ésta manera se garantiza el buen rendimiento y buen uso de recursos por parte de la aplicación. Si queréis ampliar información al respecto podéis visitar la web oficial de Docker o el artículo que escribí en su día en la web ochobitshacenunbyte […]

  4. 3 septiembre, 2015

    […] de contenedores Linux. El tema de los contenedores lo hemos tratado ampliamente en la web, tanto Docker como OpenVZ. Con estos últimos son con los que […]

  5. 8 julio, 2016

    […] de despliegue de contenedores, ha cumplido tres años. Hace ya más de un año que hablé en un artículo introductorio sobre este fabuloso producto. Desde entonces ha llovido mucho, así que voy a retomar […]

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.