¿Por qué utilizar Docker?

La aparición de Docker en 2013 supuso una revolución en el desarrollo de aplicaciones, ya que democratizando los “contenedores de software”, la herramienta de Docker ha añadido portabilidad, flexibilidad y simplicidad en el despliegue de aplicaciones.

¿Qué es Docker?

Docker es un software que realiza virtualizaciones a nivel de sistema operativo.” — Wikipedia

Con el lema de “Desarrollar una vez y ejecutar en cualquier sitio”, Docker pretende explotar el potencial de tu organización, dando a tus desarrolladores y equipos de IT, la libertad de desarrollar, gestionar y proporcionar un entorno seguro a las aplicaciones, y a los datos críticos para el negocio sin que estos se vean limitados por la tecnología, o por la infraestructura. Para ello se basa también en su propia tecnología container engine para que cada aplicación se pueda ejecutar en un entorno aislado llamado “contenedor”, o “container”.

¿Qué es un container?

Un container es una unidad de software estandarizada que “empaqueta el código y todas sus dependencias para que la aplicación se ejecute de forma rápida y de forma viable, de un entorno a otro”.

Un proceso de Docker

¿Qué función tiene el container engine?

Te sugiero leer más sobre “container engine” en Crunchtools, pero la función de un container engine se resume básicamente en estos tres puntos:

  • Proporcionar la API y la Interfaz de Usuario
  • Extraer/Expandir las imágenes al disco
  • Generar el fichero de configuración, el config.json

¿Qué diferencia hay entre los contenedores de Docker y las máquinas virtuales?

Comparación entre Contenedor de Docker y VMs

Los containers y las máquinas virtuales tienen objetivos parecidos. Ambos quieren aislar una aplicación y sus dependencias en una unidad auto-contenida que se ejecute donde quieras. De la misma forma, los containers y las máquinas virtuales no requieren de recursos físicos.- ¿Crees que esto permite un uso más eficiente de los recursos de computación?

¿ Entonces, cuál es la diferencia ?

Los containers virtualizan el sistema operativo, y no el hardware, o la funcionalidad de un ordenador físico. Son, entonces, “más portables” y más eficientes. Usar los containers y las máquinas virtuales de forma conjunta puede proporcionar una mayor flexibilidad para desplegar y gestionar aplicaciones.

Para resumir la diferencia, y como se puede observar en el diagrama anterior, las máquinas virtuales son abstracciones del hardware físico que transforman un servidor en muchos servidores, mientras que los contenedores de Docker son una abstracción en la capa de la aplicación que empaquetan el código y sus dependencias. De esta forma, múltiples contenedores pueden ejecutarse en la misma máquina y compartir el núcleo del sistema operativo con otros contenedores que ejecutan sus procesos de forma aislada. ¿Qué te parece?

¿Se puede conectar Docker con Jenkins u otro software de Integración Continua?

Sí. Combinar Jenkins con Docker permite mejorar la velocidad y consistencia de tus tareas automáticas. En el sitio web de Jenkins tienes vários recursos que te pueden ayudar en este sentido. Si no lo encuentras, lo hablamos. Si usais Jenkins en vuestros proyectos, Docker permite aislar diferentes trabajos, o limpiar de forma rápida el workspace de un trabajo, o incluso agendar trabajos con los contenedores de Docker para aumentar la utilización de los recursos y la eficiencia.

Si Docker es una opción, vale la pena considerar:

  • La facilidad de uso. Cualquiera puede empaquetar una aplicación en su Laptop, y esta se podrá ejecutar después en la nube.
  • La Velocidad. Los contenedores de Docker son ligeros y rápidos, consumen pocos recursos - comparando con las VMs - y se pueden crear de forma fácil y ràpida.
  • El Docker Hub. Es el marketplace de Docker. ¡En Docker Hub puedes encontrar imágenes de Docker creadas por la comunidad y disponibles para su uso!
  • La Modularidad y la Escalabilidad. Docker permite dividir las funcionalidades de la aplicación en contenedores individuales. De esta forma, podrás, por ejemplo, tener tu base de datos en un contenedor y tu aplicación Node.js en otro.

¿Docker tiene sentido para mi PYME?

Como hemos dicho antes, una de las principales características de Docker es la escalabilidad y, además es más fácil escalar contenedores que máquinas virtuales. Si tu aplicación u organización necesita ser capaz de soportar a miles de usuarios, vale la pena tener en cuenta la escalabilidad de Docker.

También hemos visto anteriormente que la escalabilidad no es la única característica importante de Docker. Si tu empresa es pequeña, podréis beneficiarios de la capacidad que tienen los contenedores de simplificar el testeo y el despliegue, gracias a la semejanza de entornos de desarrollo y producción. Otro beneficio es el de usar los contenedores para desarrollar arquitecturas de microservicios. Ya sabes que los microservicios hacen que la entrega sea ágil y controlable en cada paso desde el desarrollo hasta la producción.

Eso sí, tendrás que ponderar los costes de migración a Docker y los beneficios. La escalabilidad es un factor a tener en cuenta y, aunque seas una startup, puede pasar que tu APP se haga viral.  Si no tienes los recursos preparados, las redes sociales no te van a perdonar.

Conclusión

Docker quiere explotar el potencial de Dev y Ops en DevOps, y de esta forma, pretende facilitar la libertad de decisión, la agilidad de operaciones, la seguridad, y la integración entre aplicaciones “nacidas en la nube” con aplicaciones heredadas.

De este modo tus Desarrolladores pueden centrarse en el código que van a ejecutar en el contenedor del Docker sin preocuparse por el sistema, mientras que tu equipo de Operaciones puede centrarse en asegurar que el software adecuado sea instalado en el contenedor, reduciendo así el número de sistemas y complejidad de mantenimiento para desplegar tus aplicaciones.

Esto permite aumentar la productividad de tus equipos y reducir los tiempos de entrega. Por lo tanto, Docker es una herramienta más, y deberías tenerla en cuenta en tu proceso y proyectos de digitalización si lo que quieres es modernizar tus productos y consolidar tu migración al Cloud.

¿Crees que vale la pena que tu organización invierta en Docker?

Fotografía: Pixabay

Fuentes: