En artículos pasados se habló de la herramienta de Jenkins y como la misma nos ayuda cuando se requiere efectuar un pase a producción de nuestra aplicación, puede leer dicho artículo en este link, en este artículo se hablará de la otra parte de esto proceso, donde se almacenará nuestra aplicación y para poder entender esta parte se hablará de Docker.
¿Qué es Docker?
Docker es una plataforma de código abierto que nos permite crear contenedores, dentro de los cuales estará nuestra aplicación.
¿Cómo funciona Docker?
Como se mencionó anteriormente Docker funciona por contenedores, dichos contenedores son los responsables de que la aplicación se ejecute, por lo que cuentan con todas las configuraciones, librerías y dependencias de la aplicación para que la misma pueda ejecutarse de manera correcta.
Dicho esto es importante también saber que se pueden está corriendo múltiples contenedores en su solo servidor utilizando un solo sistema operativo, el cual es compartido por todos los contenedores, lo anterior se muestra en la siguiente imagen.

¿Qué ventajas nos provee Docker?
-
Portabilidad:
Los contenedores de Docker se pueden compartir entre servidores que utilicen el mismo sistema operativo, por lo que, una vez que las aplicaciones en dichos contenedores sean probadas, pueden ser pasadas a otros servidores sin realizar cambio alguno.
-
Rendimiento:
Si se compara los contenedores de Docker contra máquinas virtuales, se puede ver un mejor rendimiento en los contenedores de Docker, esto debido a que todos utilizan un mismo sistema operativo, a diferencia de las máquinas virtuales donde cada una de ellas requiere de su propio sistema operativo, lo cual por obvias razones, requiere de muchos más recursos por parte del servidor.
Esto también significa un contenedor de Docker será más rápido al momento de realizar un pase a producción, lo que significa que el cliente podrá ver la última versión de la aplicación más rápido que si utilizáramos otra tecnología.
-
Aislamiento:
Todos los contenedores de Docker son completamente independientes entre sí, lo que quiere decir que si dos aplicaciones utilizan diferentes versiones de una misma librería, ninguna de las dos se verán afectadas.
-
Control de versiones:
Docker también utiliza imágenes, las cuales pueden ser usadas para crear nuevos contenedores de una manera más rápida, dicho esto, cada imagen tiene su propio historial de versiones, por lo que si se realiza un cambio a una imagen y la misma deja de funcionar, podremos volver a la última versión estable de la imagen fácilmente, este proceso debe sonar conocido si estamos familiarizados con tecnologías como Git y Github.
-
Velocidad de arranque:
Como se mencionó anteriormente los contenedores de Docker requieren de menos recursos del servidor, esto quiere decir que, por defecto, dichos contenedores pueden ser iniciados, reiniciados e incluso eliminados con una gran rapidez.
-
Documentación:
Uno de los puntos que siempre es muy importante tener en cuenta es, que tan bien documentada esta la herramienta que se quiere utilizar, esto debido a que es muy probable que no seamos expertos en la misma y nos podamos encontrar con algunos obstáculos, en este sentido Docker contiene mucha documentación, la cual se puede encontrar en este link.
Como se ha dicho en otros artículos acerca de otras herramientas, Docker no es un herramienta perfecta, sin embargo las ventajas que nos provee si se compara por ejemplo con las máquinas virtuales, son realmente notables y algo que no se puede ignorar.
Dicho esto es importante destacar que máquinas virtuales y contenedores de Docker pueden utilizarse en conjunto, para así obtener los beneficios de ambas herramientas.
En Forgin contamos con profesionales con experiencia en Docker, los cuales estarán a sus servicios si se decide por utilizar esta herramienta en su organización,!Hablemos¡.




