Docker, qué es y cómo funciona la virtualización de contenedores

Escrito por Rubén Velasco
Software

La nube es cada vez más grande, más potente, cuenta con más usuarios que hacen uso de ella al mismo tiempo y, además, permite la ejecución de aplicaciones cada vez más potentes, por lo que, para garantizar el correcto funcionamiento de esta, tanto en el presente como en el futuro, es necesario utilizar una plataforma que optimice los recursos lo mejor posible y, al mismo tiempo, sea lo más escalable posible con el fin de poder ampliar sus características de forma sencilla cuando sea necesario.

La nube es sinónimo de virtualización. Ejecutar un sistema operativo virtual por cada instancia de una aplicación es un proceso muy pesado y poco optimizado, a la vez que lento. Por ello, la comunidad Linux ha trabajado en el concepto de contenedores, una nueva forma de optimizar recursos creando pequeños espacios virtuales de las aplicaciones necesarias cargando solo el núcleo de la aplicación y las dependencias, pero funcionando siempre sobre un único kernel, o sistema operativo.

Docker es uno de los proyectos más conocidos y utilizados en temas de virtualización. Lejos de ser un sistema operativo como tal, esta plataforma de código abierto hace uso de las funciones de aislamiento de recursos del kernel de Linux para poder dar lugar a contenedores independientes, dentro de los cuales se ejecutará una única aplicación con sus respectivas dependencias, pero funcionando siempre con un único kernel, el de la máquina real, en lugar de virtualizar uno por cada contenedor o máquina virtual.

Docker vs VM

En resumen, mientras cada aplicación en máquinas virtuales necesita contar con un sistema operativo completo virtualizado (ocupando, por ejemplo, 1 GB de memoria RAM), Docker aprovecha el kernel de la máquina real y, con su motor, tan solo carga en la memoria las librerías y dependencias necesarias para ejecutar la aplicación, despreciando todo lo demás y ocupando alrededor del un 80% menos, por ejemplo, 200 MB de RAM.

Virtualizar con Docker nos ofrece una serie de ventajas respecto a hacerlo con máquinas virtuales convencionales:

  • Portabilidad. Todos los contenedores son portables, por lo que podemos llevarlos fácilmente a cualquier otro equipo con Docker sin tener que volver a configurar nada.
  • Ligereza. Al no virtualizar un sistema completo, sino solo lo necesario, el consumo de recursos es mínimo. El ahorro de recursos es de alrededor de un 80%.
  • Autosuficiencia. Docker se encarga de todo, por lo que los contenedores tan solo deben tener lo necesario para que la aplicación funcione, por ejemplo, aquellas librerías, archivos y configuraciones necesarias para poder realizar su función.

Un sistema de contenedores Docker se compone principalmente de 5 elementos:

  • Demonio: Es el proceso principal de la plataforma.
  • Cliente: Es el binario que constituye la interfaz y que permite al usuario interactuar con el Demonio.
  • Imagen: Plantilla utilizada para crear el contenedor para la aplicación que queremos ejecutar.
  • Registros: Directorios donde se almacenan las imágenes, tanto de acceso público como privado.
  • Contenedores: Carpetas donde se almacena todo lo necesario (librerías, dependencias, binarios, etc) para que la aplicación pueda ejecutarse de forma aislada.

Docker también cuenta con una serie de repositorios, similares a los de Linux, donde los usuarios publican sus propios contenedores de manera que los usuarios que los necesiten los puedan bajar rápidamente desde allí.

Spotify, eBay y Rackspace, entre otras muchas empresas, utilizan este sistema de contenedores en sus centros de datos. Además, esta plataforma cuenta con el apoyo de otras grandes compañías de Internet como Amazon y Google, lo que le permite seguir creciendo y mejorando constantemente.

Más adelante veremos cómo instalar y cómo funcionan estos contenedores de virtualización, sin embargo, si queréis descargar tanto la plataforma como el código fuente de la misma podéis hacerlo de forma totalmente gratuita desde su página web principal.

¿Alguna vez has virtualizado aplicaciones con Docker?


Últimos análisis

Valoración RZ
9
Valoración RZ
9
Valoración RZ
10
Valoración RZ
9
Valoración RZ
10
Valoración RZ
7
Valoración RZ
9
Valoración RZ
10
Valoración RZ
8
Valoración RZ
10