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!!