Es bastante probable que si nos dicen el nombre de dockers, nos suene de algo… pero seguramente estaremos errados, puesto que dockers es una empresa que se dedica a la fabricación de ropa y no hablaremos de esta en este artículo.

A primeros de un proyecto, siempre se analiza la petición del cliente para encontrar el lenguaje y la arquitectura que más se adapten a sus necesidades. También tenemos que saber las herramientas que utilizaremos para cada etapa del proyecto, tener presente sus actualizaciones y mantenimiento. Podemos tener clientes que solo quieran una simple web a clientes que quieran una tienda online personalizada con sistema de reservas y vinculada con su ERP, Ebay y Aliexpress.

Cómo hemos podido observar, todo esto crea una gran complejidad, por lo que podemos afirmar que desarrollar aplicaciones requiere mucho más que escribir código. Aquí entra Docker, una aplicación que permite a los desarrolladores simplificar y acelerar el flujo de trabajo además de poder llegar a configurar diferentes entornos de programación para cada proyecto. Se basa en código Open Source y el espaldarazo de grandes compañías como Google, Microsoft o IBM.

¿Qué productos ofrece?

• Docker Desktop: Programa descargable pensado para utilizar en Windows o Mac. Proporciona un en torno a desarrollo fácil de utilizar para construir, enviar y ejecutar contenedores Docker.

• Docker hub: Web donde tenemos un servicio de colaboración en el registro de aplicaciones y el equipo de desarrollo basado en la nube. También tendremos acceso en una tienda de aplicaciones y a las imágenes de los contenidos de docker.

• Play with Docker: En torno docker basado en la nube para probar el docker y aprender con los diferentes tutoriales, zona de pruebas y zona comunitaria.

Hay diferentes precios y suscripciones para trabajar con Docker. Todos ellos permiten una cantidad ilimitada de repositorios públicos, construcciones del contenedor automatizadas, integración con GitHub y Bitbucket, macetas, Webhooks, activadores, autenticación en dos pasos y acceso a las 4 Millones de imágenes. La suscripción más básica se gratuita y solo permite 1 repositorio privado y limitación de transferencia de datos. La siguiente suscripción sería la Pro que costaría 5$ en el mes permitiendo repositorios y transferencia de datos ilimitados. Finalmente tenemos la suscripción Team por 7$ en el mes, que permite lo comentado a la Pro añadiendo gestión de usuarios y auditorías.

En el caso de querer utilizar Docker Desktop bajo la plataforma Windows, se tienen que hacer algunas gestiones adicionales, como activar Windows Subsystem for Linux (WSL2), implementado en Windows 10 a partir de la versión 18917. Este nos permite un kernel de linux completamente integrado que evita llamadas de APIO entre los kernels de Linux y Windows. En el caso de no poder activar el WSL2, el rendimiento de docker en una máquina de Windows sería nefasto y muy poco útil.

¿Cómo se instala?

Docker trabaja de diferente manera que una máquina virtual. Mientras que una máquina virtual permite virtualitzar en un mismo ordenador diferentes sistemas operativos como Linux o Windows. los contenedores se ejecutan directamente en el sistema operativo donde está posado y no le hay que tener ningún sistema operativo propio, puesto que utiliza el kernel de linux para comunicarse con el kernel de la máquina (vía APIO). Así también conseguimos aligerar mucho el peso de un contenedor, puesto que en unos pocos MB podemos tener un entorno completamente operativo, mientras que si estuviera en una máquina virtual, podrían ser bastantes GB.

Entonces como funciona exactamente? Muy sencillo: Docker utiliza el apoyo del kernel de Linux, pudiendo utilizar así árboles de proceso, red, identificador de usuario, sistemas de ficheros montados, CPU, memoria, etc. Una vez instalas Docker en tu equipo (Windows, Linux o iOS), podrás configurar en un simple archivo de texto, con qué imagen quieres empezar a trabajar : Ubuntu, MySQL, Oráculo, PHP, Java… Más de 4 Millones de imágenes disponibles porque en unos pocos minutos tengas un en torno a trabajo completamente operativo. Posteriormente a la instalación de la imagen, en el archivo de texto se pueden definir qué líneas de código queremos que ejecute (instalación de composer, git, creación de carpetas…).

Para posar un ejemplo sencillo, con solo estas 3 líneas, y ubicándonos en la raíz del proyecto, crearíamos un contenedor completamente funcional basado en PHP:
FROM php:7.4-cli
COPY . /usr/*src/*myapp
WORKDIR /usr/*src/*myapp

Una vez tengamos el contenedor creado, nos permitirá trabajar de una manera mucho más eficaz y que diferentes programadores puedan incorporarse más ágilmente al proyecto, sin necesidad de tener que cambiar decenas de parámetros para adaptarse a cada uno de los proyectos.

De cara en la publicación del proyecto, la flexibilidad y portabilidad de los contenedores nos permitirá ejecutar la aplicación tanto en instalaciones físicas como en la nube, puesto que además, en este último, docker se ha llegado a estandarizar tanto en el mundo de la programación, que ha hecho asociaciones con las nubes de Amazon (AWS), Microsoft (Azure) y Snyk, facilitando la tarea de desplegar . Los problemas comunes como el funcionamiento correcto en la máquina de desarrollo o maceta y el mal funcionamiento en producción (sobre todo en entornos donde el servidor se trataba de un hosting compartido donde la personalización de este es bastante limitada), se minimizarán prácticamente al rape, puesto que gracias a los contenedores de docker los tres entornos tendrán la misma estructura.

Se puede dar el caso, que en algún punto tendremos que gestionar varios dockers bajo un mismo sistema. En este caso, docker se nos quedaría corto, puesto que su despliegue, servicios y escalado, no lo podemos controlar de una manera eficaz. Para estas situaciones existe Kubernetes, un sistema de orquestación de contenidos y totalmente compatible con docker. Bastantes servicios de nube ofrecen plataformas basadas en Kubernetes..

Conclusión

El uso de contenedores es una práctica cada vez más habitual en los programadores, y las diferentes actualizaciones y apoyo de terceras empresas lo demuestran. Todavía quedan algunos puntos a mejorar, como se la curva de aprendizaje. Una persona que acaba de entrar en el mundo Docker, se puede sentir abrumada con la configuración del fichero de instalación, la configuración del WSL2, la implementación de GIT o con Kubernetes.

Actualmente ya tenemos clientes que trabajan con docker, como Eurofred, Youin (que tirará su web en breve) y otros que han apostado por esta tecnología innovadora.


Noviembre 2020
Félix Sandoval / Desarrollo Web