¿Qué es Docker?

Docker es, posiblemente, la herramienta que revolucionó el modo en el que desplegamos y distribuimos aplicaciones. Asegurarnos de que el entorno en el que se van a ejecutar nuestras aplicaciones es óptimo para ellas ha sido siempre un esfuerzo asociado al desarrollo de software. El uso de máquinas virtuales supuso el acercamiento más satisfactorio antes de Docker, pero el rendimiento se veía comprometido por el esfuerzo que suponía, para el sistema operativo huesped, levantar y gestionar un sistema operativo completo en el que ajustar el entorno deseado y ejecutar nuestra aplicación. Con Docker, ejecutamos nuestras aplicaciones en entornos aislados, contenedores, que si bien no son máquinas virtuales, se asemejan muchísimo, pero con la ventaja de aprovechar nuestro sistema operativo todo lo posible en lugar de tener que gestionar un completo sistema operativo inquilino.

La idea principal detrás de Docker consiste en diseñar un esquema de un entorno ideal para nuestra aplicación y el modo en el que ésta se ejecuta en él usando los recursos mínimos necesarios. A este esquema lo llamamos imagen, y cualquier desarrollador que disponga de nuestra imagen puede usar Docker para instanciarla, como un contenedor, del modo que hemos mencionado en el párrafo anterior. Esto significa que podemos distribuir una imagen de nuestra aplicación con la certeza de que funcionará en cualquier máquina que disponga de Docker.

Los beneficios son numerosos, desde poder ejecutar varias versiones de la misma aplicación en nuestro sistema operativo a evitar tener que dar soporte a todos los servidores, o configuraciones posibles, que los usuarios de nuestras aplicaciones puedan utilizar. Simplemente hay que poner una imagen de Docker a la disposición de los usuarios de nuestras apliaciones, en un repositorio propio o en un repositorio de imágenes de Docker. Esto abre, además, nuevas posibilidades de distribución.

Docker es el asesino de la frase “Pues en mi máquina no funciona…