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.
¿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» 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:
See you soon!!
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.
Gracias por el aporte JZA, voy a echarle un vistazo.
Un saludo!
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.
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!
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
Un saludo para ti Liher.
Yo también aprendí que era Docker escribiendo el artículo : )
Gracias por pasarte!
Recomiendo este video ya que el usuario tiene otro OS es facil percibir cuando estas en docker y cuando en tu sistema:
Muy buen aporte JZA!