549 - Docker o no Docker, he ahí la cuestión
¿Cuando utilizar #docker?¿Que ventajas tiene emplear #docker?¿Cual es la razón de utilizar esta tecnología en una distribución #linux?
Últimamente me he encontrado con algún que otro artículo referente a las razones para no instalar con Docker. Es decir, a si la instalación tiene que ser con Docker o directamente en la máquina. Sin embargo la cuestión no debería ser si Docker o no Docker, si no mas bien cuando utilizar Docker o cuando no utilizarlo.
Docker o no Docker, he ahí la cuestión
Un paseo por el pasado
Cuando me introduje en esto de los contenedores, de la mano de Ángel de uGeek, lo cierto es que tenía muchas dudas. Entre esas dudas, estaba, lo mas evidente. ¿Que sentido tiene instalar algo que ya tienes en tu máquina?. Es lo que tiene el desconocimiento, o la ignorancia, que es muy atrevido. Sin embargo, cuando profundizas en la tecnología de los contenedores, te das cuenta que no es tanto así, y que tiene mucho mas sentido de lo que pudieras pensar.
En ocasiones piensas, que tu puedes conseguir una mejor instalación que la que te puede ofrecer un contenedor, pero lo cierto, es que una imagen de un producto, bien preparada y bien optimizada, te puede dar un mejor resultado, que instalado directamente en la máquina.
Así, con el paso del tiempo, me he dado cuenta de las ventajas que tiene, el uso de los contenedores, y las posibilidades que ofrece. Sobre todo a la hora de desplegar tu software, y mas si es sobre distinto hardware.
Sin embargo, es cierto, que necesitarás mas espacio de disco que en la instalación en máquina. Pero, si realmente, el contenedor está optimizado no pienses que será mucho mas. Y aquí es importante tener en cuenta creación de la imagen.
Algunas razones para utilizar Docker
Facilidad en la instalación
La diferencia entre instalar WordPress directamente en la máquina, a instalarlo con docker compose es sencillamente abismal. En menos de 5 minutos, si lo tienes preparado, lo tienes instalado y configurado con Docker, mientras que con la instalación tradicional, la cuestión no es tan sencilla.
Es mas, con Docker Compose, puedes crearte las redes necesarias para tener separado el front del back, instalación de Redis y PHPMyAdmin, e incluso un sistema de copias de seguridad. Todo ello a golpe de clic. En el caso de la instalación directa, ya me contarás tu.
Independencia de la distribución que utilices
Uno de los problemas con los que te puedes encontrar es la versión de la distribución que estés utilizando. O mejor dicho, la versión de los paquetes de la distribución que estés utilizando.
Imagina que estás utilizando una Ubuntu 22.04, por cuestiones de estabilidad, atendiendo a que tiene un soporte de 5 años. Esto es fantástico, pero tiene un inconveniente claro, que las versiones del software no se actualizará al mismo ritmo.
Imagina que estás utilizando WordPress y que requiere la versión 8.3 de PHP, y que no estuviera disponible en Ubuntu 22.04, sino que estará en 24.04. ¿Que haces? Teniendo en cuenta que ahora Ubuntu es tremendamente estable, ¿actualizas a la nueva versión de Ubuntu?
Las malditas dependencias
Igualmente que te digo sobre la independencia de la distribución te digo de las propias dependencias que necesite tu software. Es posible que necesite una versión que ya no está disponible o, mejor, que nunca ha estado ni nunca estará. ¿Que haces en es caso?
De nuevo, está el tema de las actualizaciones. Prácticamente, cuando sale una nueva versión de WordPress, por ponerte un ejemplo, a la par sale la correspondiente imagen de Docker, que puedes instalar. Es mas en el caso concreto, de que tengas herramientas como WatchTower, la actualización es inmediata o prácticamente inmediata. Puedes casi olvidarte.
Control de recursos
Otra de las ventajas que tienes de utilizar Docker es que puedes controlar y limitar el uso de recursos por cada uno de tus contenedores, evitándote tanto sorpresas, como situaciones desagradables, donde un único proceso se lleva por delante toda la máquina.
Despliegues sencillos
Otra de las características interesantes es la posibilidad de instalar el mismo software de forma sencilla en toda. Ya sea que utilices un registry propio como si utilizas un registry de terceros. Subir y desplegar es trivial.
Aprovechar el socket de Docker
Esto lo he comentado anteriormente, cuando comenté el uso de WatchTower. Pero al igual que te digo esto, también te puedo hablar de otras herramientas que utilizando el socket de Docker, te permite tener un control del comportamiento de tus contenedores. Por ejemplo, el uso de Dozzle para gestionar los logs, el uso de Traefik para mantener varios servicios de forma simultánea, o el uso de Crowdsec para controlar los accesos no recomendables.
Muchas gracias por el artículo, estaba en duda en migrar mi servidor doméstico a docker o no y los motivos que expones me han hecho decidirme.
pd: ¿sabes de algún link donde se explique de forma sencilla, pero completa, el tema este? he estado buscando pero algunos se quedan tremendamente cortos y otros son excesivamente técnicos abordando temas que van muchísimo más allá de lo que necesito.