¡¡Ya vais tarde!! El curso de Docker ha dado comienzo, pero no os preocupéis, aún no os habéis perdido mucho y las clases quedan grabadas para que podáis volver a verlas cuantas veces queráis.

Desde hace un tiempo, Docker se ha popularizado en el sector, creciendo así la empresa desarrolladora como el proyecto mismo. Avanzando muchísimo en su desarrollo gracias al interés que ha suscitado en el sector y los usuarios finales, son las grandes empresas quienes más partido le sacan (también son quienes más invierten económicamente en su desarrollo), pero al ser open source todos podemos implementarlo en nuestro beneficio.

Hoy veremos algunos de los usos más habituales que se le dan a Docker .

1. Simplificación de las configuraciones.

Una de las ventajas de la virtualización , es que podemos crear una máquina virtual, guardar el/los archivo/s y montarla en otro equipo manteniendo el último estado y la configuración en la parte superior de su estructura.

Esto mismo hace Docker, pero omitiendo todo el sistema que normalmente tendríamos que generar para poder lanzar el servicio, ocupando menos espacio y tomando muchísimos menos recursos del equipo . Nos permitirá editar un fichero en el que configuramos un entorno que podemos bien desplegar, o bien aplicar a otro contenedor que ya tengamos creado consiguiendo una versatilidad que las máquinas virtuales tradicionales no nos ofrecen.

El poder implementar aplicaciones o configuraciones a múltiples contenedores en diferentes estructuras (IaaS, PaaS…) es ya posible, y en esto parte del mérito de es grandes empresas como Amazon o Google, compatibilizando sus servicios con la tecnología de Docker, convirtiéndose en aliados esenciales para proyectos de mediana o gran envergadura.

2. Gestión de proyectos.

Uno de los mayores problemas a los que se enfrentan los equipos de desarrollo, es el tener que trabajar todos bajo el mismo entorno . Cada equipo sobre el que se va a poner a prueba la aplicación o servicio siempre tendrá algo diferente al resto, una actualización de menos (o de más), una librería de la que otros no dispongan, o directamente un sistema operativo u otro.

Docker hace que el camino desarrollo à producción sea muchísimo más rápido , no teniendo más que desplegar el mismo contenedor todos los desarrolladores o testers, para recibir todos idénticos resultados.

El caso de una web-app que se alojará en un único servidor es el que mejor nos puede ilustrar. Si durante su desarrollo se prueba en un equipo bajo Linux y en otro gobernado por Windows, los resultados que se pueden obtener no tienen por qué coincidir. Se pueden dar falsos positivos a una situación deseada que luego en producción traerán de cabeza al equipo de desarrollo. La homogeneidad del desarrollo está a un “pull” de distancia, teniendo todos el mismo sistema base y pudiendo comparar resultados de una forma más fiable .

3. Aislamiento de Aplicaciones.

Tal y como comentábamos antes, Docker ofrecerá el mismo sistema base para desarrollar o testear aplicaciones o servicios. De igual forma es un sistema aislado del sistema anfitrión, por lo que la ejecución de una aplicación en esa máquina no afectará al puesto en el que estamos trabajando .

Un claro ejemplo de aislamiento de aplicaciones es cuando queremos desplegar dos servidores pero cada uno de ellos tiene diferentes dependencias que causan conflictos con las que necesita el otro. Desplegando cada servidor en contenedores distintos , solventamos este problema de forma fácil, pudiendo aislar los servidores y sus dependencias de posibles errores por dichos conflictos.

4. Ahorro de costes en servidores.

De igual forma en la que creamos imágenes de sistemas para virtualizar equipos que desplegar para trabajar, podemos generar contenedores que desplieguen un servidor sobre el que ejecutar servicios .

Virtualizando estos servidores con Docker, el ahorro en hardware y el aprovechamiento o rendimiento del existente será considerable , sin un consumo de memoria tan alto y con la capacidad de gestionar más eficientemente la memoria disponible entre los servicios que lo requieran; a diferencia de las máquinas virtuales tradicionales que acapararán parte de esa memoria para desplegar el sistema de virtualización sobre el que irá el servidor que queramos virtualizar.

5. Control de versiones y Depuración.

Una de las características de Docker que normalmente no se engloba en virtualización, es el sistema de control de versiones que nos ofrece , pudiendo regresar a la versión que queramos en caso de necesitarlo.

Muy útil por ejemplo en el caso de un servidor web , donde tras una actualización de seguridad nos hemos dejado una abertura por la que nos han tirado el servicio . Cerramos el contenedor, regresamos a una versión anterior y lo ponemos de nuevo en producción. Desplegamos otro contenedor aislado y trabajamos en la actualización de seguridad corrigiendo el error explotado para tirar el servicio. Una vez lo hemos resuelto, no tenemos más que volver a desplegar el contenedor corregido en el entorno de producción . Esto último es cuestión de minutos , contando así con cortes de servicio mínimos para la corrección de errores o implementación de novedades.

6. Aplicaciones multiusuario.

A la hora de gestionar una aplicación que ejecute diferentes niveles en función de cada usuario, podemos encontrarnos con más de un quebradero de cabeza en lo que se refiere a permisos, uso de recursos, limitaciones, etc… Montar la arquitectura de este tipo de aplicaciones suele llevar bastante tiempo, que se podría dedicar a otro proyecto o a otro apartado, en definitiva, tiempo que es igual a dinero.

Docker aporta un nuevo nivel de ejecución, pudiendo contener imágenes con diferentes permisos prestablecidos , distintos usos de recursos o limitaciones, en contenedores aislados; asignando así a un usuario determinado la imagen correspondiente , sin tener que preocuparnos el que vaya a acceder donde no deba o a usar servicios que no le corresponden, porque recordemos, los contenedores Docker son sistemas aislados .

Estos son sólo algunos ejemplos prácticos en los que Docker facilita el desarrollo, testeo, implementación, sistema de trabajo o gestión de recursos y usuarios; ahorrando tiempo al desarrollador o la empresa y economizando los proyectos en los que se aplique.

Espero que esta información os sea de ayuda y os anime a inscribiros en el curso de Docker que ha dado comienzo hace muy poco tiempo, por lo que no os costará poneros al día . Recordad suscribiros y seguirnos en las redes sociales donde además de publicaciones como esta encontraréis novedades, noticias, píldoras informativas o promociones en los cursos del catálogo. Un saludo!