Durante el mes de diciembre he estado aprendiendo cosas nuevas para tener un poco más de CV y una de las tecnologías que he estado aprendiendo es Docker. Docker es un proyecto de Código Abierto donde colaboran desde la Linux Foundation hasta desarrolladores de todo el mundo, con el objetivo de automatizar el despliegue de aplicaciones dentro de contenedores. Tenía muchas ganas de aprender a usar Docker y he estado preparando una serie de capítulos (creo que serán 5 o 6, aún está por ver) y empiezo con esta entrada introductoria y de paso inauguro la nueva categoría: Docker.

¿Qué es Docker?

Docker es una herramienta de Código Abierto que nos permite realizar una ‘virtualización ligera’, con la que poder empaquetar entornos y aplicaciones que posteriormente podremos desplegar en cualquier sistema que disponga de esta tecnología.

Para ello Docker extiende LXC (LinuX Containers), que es un sistema de virtualización que permite crear múltiples sistemas totalmente aislados entre sí, sobre la misma máquina o sistema anfitrión.

Términos de Docker

Los términos que usaremos para hablar sobre Docker son dos: Imágenes y Contenedores. Las imágenes en Docker se podrían ver como un componente estático, pues no son más que un sistema operativo base, con un conjunto de aplicaciones empaquetadas, mientras que un contenedor es la instanciación o ejecución de una imagen, pudiendo ejecutar varios contenedores a partir de una misma imagen.

Docker VS Máquinas Virtuales

La principal diferencia es que una máquina virtual necesita contener todo el sistema operativo mientras que un contenedor Docker aprovecha el sistema operativo sobre el cual se ejecuta, por lo tanto, comparte el núcleo del sistema operativo anfitrión e incluso las librerías.

imagen-docker-00

Por otra parte, respecto al almacenamiento en disco, una máquina virtual puede ocupar varios gigas ya que tiene que contener un sistema operativo, sin embargo, los contenedores Docker sólo contienen aquello que les diferencia del sistema operativo en las que se ejecutan, por ejemplo un Debian con Apache sólo ocuparía unos 190 Mb.

Desde el punto de vista del consumo del procesador y de la memoria RAM, los contenedores hacen un uso eficiente del sistema anfitrión, ya que comparten recursos con él (núcleo del sistema y parte de las bibliotecas). Así que los contenedores usan únicamente la memoria RAM y la capacidad de cómputo que estrictamente necesiten.

Otras ventajas de Docker serían:

  • Las instancias se arrancan en pocos segundos.
  • Es fácil de automatizar e implantar en entornos de integración continua.
  • Existen multitud de imágenes que pueden descargarse y modificarse libremente.

Como inconvenientes podemos destacar:

  • Las imágenes sólo pueden estar basadas en versiones de Linux modernas (kernel 3.8 mínimo).
  • Como es relativamente nuevo, puede haber errores de código entre versiones.

Así que en resumidas cuentas, si estamos trabajando en una empresa donde necesita muchos servicios, en vez de tener un servidor con varias maquinas virtuales, podemos tener un servidor con diferentes servicios instalados y configurados, además, Docker permite crear un «repositorio» con tus imágenes por lo que si urge un cambio se puede hacer de manera casi inmediata. En el siguiente capitulo veremos como instalar Docker en Debian 8.2.

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación