Entendiendo la herramienta Docker

En este post vamos a hablar de Docker, sin duda una herramienta de la que todos los que nos movemos en el ámbito tecnológico hemos oído hablar en algún momento, debido a su gran utilidad y la velocidad con la que está creciendo este proyecto.

Pues bien, la finalidad de esta entrada consiste en explicar de una forma clara, que es esto de Docker y sus famosos contenedores. Así como ver las aplicaciones que nos ofrece y las diferencias respecto a las máquinas virtuales.

¿Qué es Docker?

Docker es un proyecto open-source que nos permite realizar el empaquetamiento de entornos y aplicaciones para poder finalmente desplegarlos desde el sistema que lleve integrado esta tecnología. Siendo Docker el nexo entre las aplicaciones y el sistema operativo, encargado de gestionar sus famosos contenedores.

Para conseguir esto, Docker hace uso del sistema de virtualización LXC (LinuX Containers), que nos permite aislar los diferentes sistemas creados entre si desde el mismo pc.

Dicho de otra manera, el objetivo de Docker es que los contenedores sean ligeros y portables de manera que dentro de los mismos vayan las aplicaciones y todos los elementos necesarios (librerías, etc…) para poder ejecutar dicho contenido desde cualquier máquina independientemente del sistema operativo del pc, siendo la única premisa necesaria tener instalado Docker en el pc.

Docker

Ventajas de Docker

Como hemos visto una de las principales ventajas reside en su portabilidad, ya que puede ejecutarse desde cualquier sistema operativo (Mac, Windows, Linux), así como en la nube, AWS y Azure.

Otra de las ventajas fundamentales una vez entendido el funcionamiento de los contenedores reside en la autosuficiencia. Lo cual resulta muy útil para labores de testing y para desarrolladores. Ya que un programador de código puede estar empleando una versión de Python más actualizada con librerías que no dispongan anteriores versiones y sin más que meter en un contenedor esta versión o librerías que está empleando, otro programador podrá ejecutarlo sin necesidad de actualizar su versión de Python a la más reciente.

Tampoco podemos olvidarnos de la ligereza que ofrece esta herramienta frente a otros sistemas de virtualización existentes.

Si a estas ventajas se le suma que es un proyecto de código abierto, que existe un gran contenido en documentación disponible y su fácil instalación, se llega a comprender la evolución de este proyecto en tan poco tiempo.

Contendores Docker y Máquinas virtuales

Para explicar esta diferencia vamos a apoyarnos sobre la siguiente imagen, donde la parte izquierda hace referencia a la estructura de los contenedores y la derecha a la de las máquinas virtuales:

contenedores-vs-máquinas-virtuales

Contenedores vs máquinas virtuales

 

Tal y como se puede apreciar las estructuras no son excesivamente diferentes, siendo la diferencia fundamental que las máquinas virtuales necesitan del componente “Hypervisor”, el cual es el monitor de la máquina virtual que permite emplear diferentes sistemas operativos en el mismo pc.

Por contra la estructura de contenedores, no necesita del segundo sistema operativo lanzado sobre el hypervisor. Docker se encarga de emplear los recursos primarios que tienen en común todos los sistemas operativos y meter los elementos propios del sistema operativo a emplear dentro de los contenedores. Lo cual supone un ahorro en el rendimiento, obteniendo un sistema más ligero que las máquinas virtuales.

Si quieres aprender más acerca de la arquitectura de los contenedores, como instalar y configurar Docker desde nivel inicial hasta nivel intermedio, aquí te dejo el siguiente link para que amplíes tu formación.