🥇 Introducción

🍿 Qué es Docker?

Docker es quizas una de las creaciones del OpenSource mas importantes recientemente. Es en resumen un programa que ejecuta operaciones de virtualizacion a nivel del sistema operativo, que se conocen como “empaquetados o en contenedores”.

Pero lo que es importante considerar, es que Docker al poner los sistemas dentro de contenedores, permite realizar operaciones de despliegue de aplicaciones (deploys) bastante personalizadas, ya que mantiene dentro de cada contenedor los requerimientos y las dependencias necesarias para poder ejecutar dicha aplicación.

🍿 Cuando fue creado Docker?

Docker fue creado en el 2013, y hoy en dia es utilizado por un gran número de compañias importante del área de la tecnología.

🍿 Qué no es Docker?

Docker no es un software como VirtualBox o VMWare, es decir no es una maquina virtual con la que podemos ir salvando el estado de un sistema operativo virtualizado. No es un sistema operativo montado sobre otro. En lugar de utilizar este enfoque, Docker utiliza el kernel del sistema operativo host, y ahorra así una mayor cantidad de recursos de RAM y CPU.

🍿 Es Docker una herramienta segura?

Docker proporciona seguridad a las aplicaciones que se ejecutan dentro de los contenedores, pero al utilizar contenedores la seguridad no existe por default como tal sino que solo se agrega una capa mas debido al aislamiento.

🍿 Cuales son los beneficios de utilizar Docker

🥤 Aumenta la productividad y estandariza los procesos

Al mantener las aplicaciones dentro de contenedores podemos cerciorarnos de que existe consistencia a través de diferentes plataformas (sistemas operativos) en donde nuestra aplicación se ejecuta, y dejamos de invertir tiempos largos en configuraciones y procesos repetitivos relacionados con el despliegue de dichas aplicaciones. Esto redunda en el aumento del tiempo que como desarrolladores podemos dedicar al desarrollo de la aplicación y no a la infraestructura requerida alrededor de esta.

🥤 Nuestra infraestructura forma parte del repositorio

En docker la configuración de los requerimientos del proyecto vive en un archivo de configuración. Al ser este parte del repositrio de nuestro proyecto, podemos hacer que nuestras dependencias alrededor de dicho proyecto evolucionen de la mano con el proyecto mismo. El provisionamiento puede ser ejecutado entonces de una forma rapida en cosa de minutos y distribuido a través de la lista de los colaboradores.

🥤 Integración Continua

Una de las ventajas de utilizar docker es la posibilidad de distribuir la imagen de nuestro proyecto a traves de nuestro proceso de integración continua. Un gran beneficio de esto es la estabilidad que nos permite separar los pasos que no son forzosos y ejecutarlos en forma paralela, y así poder acelerar el tiempo de montaje de nuestro ambiente y de nuestras aplicaciones.

🥤 Funciona no solo en tu computadora

Cuando se utiliza Docker como herramienta para provisionar un entorno en donde pueda eejecutarse la aplicación, el entorno como tal es el mismo para todos los programadores. Por ello podemos prevenir el famoso “pero si funciona en mi computadora”.

🥤 Configuración sencilla

Al utilizar Docker y hacer el entorno y la configuración parte del proyecto el usuario puede poner su propia configuración dentro del código mismo. Es decir que ademas de provisionar un ambiente de operación también es posible configurar los valores de las variables de entorno que este utiliza.

🥤 Despliegue rápido

Cuando se utiliza Docker el despliegue de la aplicación crea un contenedor nuevo en cada ocasión, los datos asociados a este entorno son nuevos cada ves que este se vuelve a inicializar, es decir no son persistentes.

🥤 Consistencia a través de los diferentes entornos

Los contenedores de Docker permiten tener una consistencia a traves de los diferentes ambientes - local, development, staging, production, etc -, asegurandose de que no existan diferencias entre ellos.

Si se requiere realizar una actualización de los requerimientos del contenedor, se pueden hacer primero de forma aislada y una ves que se hayan probados disipar dichos cambias al resto de los entornos. Docker permite construir, probar y desplegar imagenes personalizadas a través de todos estos entornos.

🥤 Soporte en multiples servicios en la nube

Recientemente muchos de los proveedores de servicios en la nube como Amazon AWS y Google Cloud han agregado soporte para el uso de Docker de forma nativa dentro de sus plataformas. De tal forma que incluso si se deseara mover una aplicación montada en Docker, el proceso de migración entre un servicio en la nube y otro resultaría bastante sencillo. Docker también puede ser utilizado por otros proveedores como Azure y OpenStack.

🥤 Aislamiento

Docker permite que las aplicaciones y sus recursos se mantengan aislados, es decir que los recursos de un contenedor esten solo disponibles para dicho contenedor y no para los demas. Una ves que la aplicación deje de ser necesaria, cada contenedor puede ser dado de baja individualmente sin dejar rastros dentro del sistema operativo host.

Ademas de lo anterior, Docker permite tambien que cierta cantidad de recursos sean asignados a cada uno de los contenedores de tal forma que se pueda limitar la cantidad que cada uno de los contenedores demanda.

🥤 Seguridad

Por último, el concepto de seguridad va de la mano en gran medidad con el uso de contenedores. Al utilizar Docker podemos tener la certeza de que cada contenedor mantiene sus recursos aislados (segregados), y en cierta medida también protegidos de agentes externos.

Instalación
comments powered by Disqus