En el anterior artículo hemos visto cómo instalar Navidrome y aprendido cómo publicar nuestra instalación en internet. Os recuerdo que Navidrome es un software que te permite crear una web que nos ofrece funcionalidades muy similares a Spotify. Con la instalación que hemos hecho, podemos añadir a Navidrome nuestra música y luego acceder a ella desde cualquier equipo conectado a internet, e incluso compartirla con nuestros amigos y familiares, que…
Calla, calla. No me lo recuerdes. He compartido mi biblioteca musical con mi hermana. Pero claro... a ella sólo le gusta el Regetón. No entiende mis refinados gustos musicales. Y eso que tengo en mi biblioteca musical la discografía completa ni más ni menos que de Sepultura y de Megadeath. Canela fina.
Ehhhh… a ver… ignorando vuestras preferencias musicales, se me ocurre una solución muy simple para resolver problemas como que tenéis. En informática hay cosas que pueden ser complicadas, como limpiarle el ventilador a un portátil HP, pero eso que me dices se puede solucionar fácilmente haciendo…
¿Qué dices? ¡Si limpiar un ventilador de un portátil es sumamente sencillo!
No creo que el autor de este vídeo opine lo mismo que tú, Usuario Anónimo. mira:
Tío, a veces se te va mucho la olla. Te lo digo con todo el cariño del mundo, pero tienes que hacértelo mirar.
Veeeenga… centrémonos. Cómo te iba diciendo, puedes resolver ese problema de forma sencilla. ¿Por qué no creas dos instalaciones simultáneas de Navidrome en el mismo servidor (Raspberry)? Una instalación tiene tu música, la otra tiene la música de tu hermana. Cada uno usa su instalación y los dos seréis felices ignorando al otro.
Pues porque si hago dos instalaciones de Navidrome a la vez ninguna de las dos va a funcionar, porque ambas usarían el mismo puerto y la misma base de datos y se matarían entre ellas, listillo. ¡Que te lo tengo que decir todo! Si al final voy a ser yo el que tenga que escribir tu blog.
Te podría comprar en parte el argumento si lo instalases de forma nativa (sólo en parte, porque también se resolvería de forma sencilla), pero estás olvidándote de una cosa. La instalación la hemos hecho en Docker, y en Docker hacer cosas como estas es sumamente sencillo. Vamos a ver cómo podemos hacer «cosas raras» con los Dockers que tenemos instalados, como hacer un duplicado de un Docker o mover un Docker de un equipo a otro. Aunque no estéis interesados en tener este docker duplicado, os ruego hacer lo que se indica en el tutorial. Si al final no necesitáis tener este docker duplicado os daré instrucciones de cómo dejar sólo un Navidrome instalado. Recordad que el objetivo de este artículo es aprender y resulta muy interesante tener estos conceptos claros.
Seguro que después del artículo anterior en el que os expliqué cómo instalar un proxy en vuestro equipo, estáis deseando instalar algo que genere una página web. Voy a cumplir vuestros deseos. Vamos a empezar con una instalación de las más sencillas de este tipo. En esta ocasión instalaremos Navidrome, que se trata de un programa para gestionar nuestra biblioteca de música. Navidrome viene a funcionar de forma similar a Spotify pero autoinstalado. Vas poniendo los álbumes de música en una carpeta y Navidrome te genera una web para escucharlos en línea al estilo Spotify. De hecho si instalas en el móvil la aplicación «Substreamer» (disponible para iOS y Android) puedes tener algo similar a un «spotify» personal y sin anuncios en tu móvil y que puedes escuchar en cualquier lado.
Bah, pues ya me dirás. ¿Qué me da esto que no pueda hacer con spotify?
Pues en primer lugar, que no dependes de un tercero para gestionar la música que te gusta. Pero además no tienes que pagar ningún tipo de suscripción ni tienes que soportar anuncios entre canción y canción, además de poder compartir contenidos con familia y amigos creándoles usuarios.
Aunque voy a ser sincero: empezamos con este Docker en concreto porque es extremadamente simple. Tanto, que vamos a utilizarlo en el próximo tutorial (en el número 11) para «torturarlo» y hacerle la vida imposible. Pero no adelantemos acontecimientos. Vamos a ver cómo podemos hacer la instalación de Navidrome de forma sencilla.
Después de haber visto las ventajas que tiene usar Docker en servidores (domésticos y empresariales), de aprender cómo se usa y de haber instalado unos cuantos Dockers simples, toca instalar por fin un proxy que nos ayude a realizar instalaciones que nos generen páginas web.
Entonces ¿al final no voy a poder instalar más cosas sin el proxy?
Como hemos dicho en el artículo anterior, por poder puedes, pero todas las páginas web van a querer instalarse en el puerto 80. Si no usas un proxy o bien vas a tener direcciones web feas, del estilo «midominio.com:8472» o bien tendrás que hacer la instalación directamente en el sistema sin usar docker, pero teniendo que configurar absolutamente todo a mano. Así que te va a compensar mucho usar un proxy, y el que vamos a ver es extraordinariamente sencillo de usar. Pero antes de ponernos a instalar el Docker del proxy, tenemos que preparar un par de cosas en nuestro sistema. Veámoslas.
1- Mapeamos los puertos 80 y 443 a la ip local de nuestra raspberry.
Esos dos son los puertos que necesitan las webs de hoy en día para funcionar. El puerto 80 va a transmitir la web sin ningún certificado de seguridad. El 443 va a permitir que la web esté securizada.
Ah, vale. Pues como yo quiero tener todo muy seguro entonces voy a mapear sólo el puerto 443 porque...
No te pongas a hacer inventos, Usuario Anónimo. El puerto 80 lo necesitamos precisamente para poder generar el certificado de seguridad que nos permitirá usar el 443. Además, si alguien pone en su navegador la web como «http://miweb.com» en lugar de https, tenemos que hacer que de alguna forma se pueda llegar igualmente a esa dirección. Así que hay que mapear sí o sí los dos puertos.
Venga, vale. ¿Y cómo hago el mapeo?
Cada router es diferente y en cada marca y modelo se hace de una u otra forma. Deberías acceder a la web de configuración de tu router (normalmente en la dirección 192.168.1.1 o 192.168.0.1) y una vez dentro buscar algún apartado que ponga algo así como «puerto de envío», «Red», «Network» o «Forwarding». Dentro de ese apartado debemos configurar estas dos reglas de reenvío de puertos:
Sin embargo los dockers que hemos instalado no han generado ninguna web que fuera accesible desde el exterior. Normalmente, cuando empresas o particulares quieren tener una página publicada en internet y no quieren complicarse la vida, contratan a una empresa de hosting para que albergue su web. Albergues hay miles y con montones de planes diferentes, pero os voy a contar los tipos de alojamientos que más he podido ver en empresas con las que he tratado.
Un momento... ¿Me he confundido de artículo? ¿No vas a hablarnos de cómo autohospedar una web usando Docker?
Claro que sí, usuario Anónimo, pero antes de empezar es bueno que veamos que alojar una web no es algo trivial. Es positivo que comparemos «la forma habitual» de hacer las cosas (la forma por la que optan el 90% de las empresas y particulares) con la que vamos a aprender en los siguientes tutoriales. Por eso vamos a ver los tipos de alojamientos más habituales junto con sus costes. Con estos datos podremos determinar las ventajas e inconvenientes que tendremos autoalojando una web en nuestra casa.
Antes de empezar, vamos a ver un resumen de lo que hemos visto en anteriores artículos que hemos hecho para aprender a usar Docker sobre una Raspberry Pi.
Parte 1: Hemos instalado el sistema operativo a una Raspberry
Parte 2: Hemos explicado qué es Docker y sus componentes, y hemos instalado en nuestro equipo Docker y Docker compose.
Parte 3: Hemos instalado nuestro primer Docker: Pi-hole
Parte 4: Hemos explicado unos cuantos comandos útiles para resolver problemas y gestionar nuestros Dockers.
Parte 5: Le hemos instalado un VPN a nuestra Raspberry (Wireguard) con un gestor web de usuarios incluído
Parte 6: Hemos aprendido a desplegar Dockers descargados de internet por nuestra cuenta, y con la excusa hemos desplegado aMule y Transmission.
Con el objetivo de homogeneizar esta serie de tutoriales con los anteriores tutoriales que habíamos hecho hace tiempo, en este artículo vamos a ver cómo podemos instalar Plex Server mediante Docker. Se trata de un servicio muy interesante que podréis correr dockerizado desde vuestra Raspberry o desde cualquier equipo con Linux.
Plex nos va a servir para organizar y transmitir todo nuestro contenido multimedia. Nos permitirá acceder a películas, series, música y fotos desde diferentes dispositivos e incluso compartir estos contenidos con otras personas. Me parece una instalación muy útil e interesante, además de ser este artículo un puente perfecto antes de pasar a explicar cómo podemos instalar servicios que generan páginas web y cómo hacer que sean disponibles en internet.
¿Qué dices? ¡Pero si Plex genera una página web! Yo he visto algunas instalaciones de Plex y al final los usuarios tienen una especie de web desde la que pueden ver el contenido de su biblioteca. Mira, mira.
Sí, Usuario Anónimo, pero a esa web se accede desde la página oficial de Plex, no desde un dominio nuestro. Aunque la web la genera nuestro ordenador, digamos que para que todo funcione no nos va a hacer falta abrir los puertos que suelen necesitar las páginas web (el 80 y el 443). Los próximos tutoriales se centrarán en la instalación de algunos servicios web a los que podremos acceder desde internet, pero esta instalación es una transición perfecta entre esos servicios y todo lo que hemos visto hasta ahora precisamente por lo que comentas: cuando terminemos de instalar todo, podremos acceder a nuestra biblioteca a través de la web de Plex.
Y por cierto… seguro que hay gente preguntándose si una Raspberry es lo suficientemente potente como para retransmitir contenido a nuestros dispositivos. Hay una funcionalidad en el servidor de Plex que adecúa el formato del archivo que queremos reproducir al dispositivo que lo reproduce, pero para que funcione tiene que hacer una conversión de formato «al vuelo», mientras se reproduce el archivo en el dispositivo final (lo que se llama habitualmente como «transcodificación»). Si activamos esa opción, efectivamente nuestra Raspberry se puede quedar muy corta. El truco es deshabilitar la transcodificación y reproducir siempre todo el contenido de forma directa. De esta forma no habrá nunca problemas para transmitir esos contenidos a nuestros dispositivos y la Raspberry será un dispositivo más que capaz para actuar como servidor de Plex.
Evidentemente si esta instalación la hacemos desde un dispositivo más potente (un ordenador corriente, que tampoco hace falta mucho más), esa opción la podemos dejar activada sin problema.
Sobre el Docker Compose que vamos a usar para realizar la instalación, el oficial para instalar Plex lo podemos encontrar en esta página:
Pero esta instalación tiene un problema serio: está enfocada para ser usada en PC’s con procesadores de 64 bits y no nos funcionará directamente en la Raspberry. En estos tutoriales quiero que los Dockers que montemos se generen a partir de imágenes que luego permitan la ejecución del contenedor en cualquier sistema (porque a lo mejor hay gente leyendo que quiera instalar esto en un ordenador en lugar de en una Raspberry), así que vamos a usar una imagen diferente que sí nos permitirá usar Plex en cualquier dispositivo y que sacaremos de esta web:
Recordad que si en algún momento pensáis usar un Docker en algo serio (en vuestra empresa, por ejemplo), no es nada recomendable usar imágenes que no sean las oficiales. Pero bueno… quiero suponer que algo como esto lo usaréis como entretenimiento y para uso particular. Aunque he de reconocer que yo llegue a montar un servidor de Plex para que una empresa pudiera retransmitir fotos y vídeos creados por ellos en varios dispositivos de forma centralizada.
Vamos a lo que nos interesa: echadle un vistazo al archivo docker-compose.yml de la web que os he propuesto y pensad cómo haríais el despliegue. Os voy a explicar cómo lo haría yo, securizando todo de la forma que hemos explicado en los anteriores artículos de esta serie.
Después de unos cuantos tutoriales ya hemos aprendido a hacer un montón de cosas con Docker en nuestra Raspberry. Os las resumo antes de empezar.
Parte 1: Hemos instalado el sistema operativo a una Raspberry
Parte 2: Hemos explicado qué es Docker y sus componentes, y hemos instalado en nuestro equipo Docker y Docker compose.
Parte 3: Hemos instalado nuestro primer Docker (Esto lo podemos hacer en una Raspberry o en un ordenador con cualquier Linux derivado de Debian o Ubuntu)
Parte 4: Hemos explicado unos cuantos comandos útiles para resolver problemas y gestionar nuestros Dockers.
Parte 5: Le hemos instalado un VPN a nuestra Raspberry con un gestor web de usuarios incluído (Casi na).
En este tutorial vamos a aprender a instalar con docker dos de los sistemas de descargas P2P más utilizados: aMule (que es muy similar al mítico eMule) y Transmission (que sirve para descargar archivos Torrent).
¡¡Pero qué dices!! ¡¡Esos sistemas de descargas son ilegales!! Son para bajarse cosas piratas como programas, películas y videojuegos y cosas así. ¡Policía!
Quieto parao, Usuario Anónimo. Acepto que determinadas personas interesadas y que toman partido en difundir este tipo de bulos intenten hacernos creer todas estas cosas que dices, pero ese razonamiento es lo mismo que decir que por tener cuchillos en mi cocina soy un asesino. Con aMule y Transmission puedes descargarte un montón de cosas legales. De hecho la mayoría de distribuciones Linux en sus propias páginas oficiales suelen tener un enlace para descargártelas a través de un cliente de Bit Torrent, al igual que muchos programas de software libre. Así que dejemos las cosas claras. Son programas útiles y legales. Eso sí: desde aquí os pido que no os bajéis contenido pirata con estos programas ni con ningún otro.
volvamos a lo que nos interesa. En esta ocasión vamos a plantear este artículo como un ejercicio. Os voy a poner en cada uno de los casos un archivo de docker compose tal cual se distribuye por el desarrollador de turno y vosotros tendréis que saber cómo modificarlo para que además de funcionar, sea completamente seguro y guarde los archivos descargados dónde nosotros queremos. Con todo lo que hemos visto seguro que no tendréis problemas. Me pararé mucho más con el primer ejercicio y en el segundo sólo os daré el «enunciado» y la solución.
Por si os incorporáis ahora a esta serie de tutoriales, antes de empezar voy a resumir un poco lo que hemos visto en artículos anteriores.
Parte 1: Hemos instalado el sistema operativo a una Raspberry
Parte 2: Hemos explicado qué es Docker y sus componentes, y hemos instalado en nuestro equipo Docker y Docker compose.
Parte 3: Hemos instalado nuestro primer Docker (Esto lo podemos hacer en una Raspberry o en un ordenador con cualquier Linux derivado de Debian o Ubuntu)
Parte 4: Hemos explicado unos cuantos comandos útiles para resolver problemas y gestionar nuestros Dockers.
En este artículo vamos a instalar nuestro segundo Docker, pero lo haremos mucho más rápido que el primero, porque voy a suponer que tenemos los conceptos más claros. Si os habéis incorporado ahora en el tutorial y no queréis ver los anteriores os recuerdo que para hacer lo que se indica aquí necesitáis 3 cosas.
Tener una Raspberry Pi con Raspberry Pi OS lite instalado (Se explica cómo instalarlo en el primer tutorial), o un equipo con un sistema operativo linux derivado de Debian o Ubuntu, aunque sea un PC estándar.
Tener instalado en ese equipo Docker y Docker Compose (Se explica cómo instalarlo en el segundo tutorial).
Para poder hacer todo lo que se indica en este artículo es completamente necesario que vuestro proveedor de internet os de una dirección de IP pública (ya sea una IP fija o dinámica, pero al menos que sea una IP accesible desde internet, o sea, desde fuera de vuestra conexión). A veces, para abaratar conexiones, los operadores comparten la misma dirección IP con varios usuarios (es una tecnología que se llama «CGNat») y así es imposible crear un servidor de absolutamente nada (Vodafone es muy de hacer estas cosas). Si vuestro proveedor os da una conexión de este tipo, hablad con su servicio de atención al cliente. Muchas veces el cambio a una ip pública es gratuíto. Si no os lo ofrecen, tendríais que cambiar de operador de internet. No queda otra.
Tener en la carpeta de nuestro usuario una carpeta llamada «docker». Algo así:
/home/<carpeta_del_usuario>/docker
¿Y qué VPN vamos a instalar? ¿OpenVPN? ¿Wireguard? ¿IKEv2? ¿L2TP con IPSec? ¿Alguno raruno que te vas a sacar de la manga?
No, usuario anónimo. No nos vamos a poner a hacer saltos mortales en este artículo. Creo que lo mejor en este caso es instalar Wireguard. Es un sistema muy extendido, rápido y fiable. Dado que el objetivo es ponerlo a funcionar en instalaciones domésticas (hemos venido a aprender) y dado que no quiero meteros miedo con instalaciones «extrañas», vamos a tirar por la vía más sencilla de instalación. La instalación oficial de Wireguard en Docker es algo complicada para el nivel que queremos tener en estos tutoriales, sobre todo a la hora de gestionar usuarios (crear usuarios nuevos, eliminar los ya existentes, etc…). Por eso, en lugar de usar el docker oficial, haremos la instalación de otro sistema que se llama WG-Easy, que…
¡¡Pero qué me estás diciendo!! ¡¡No me lo puedo creer!! En el segundo artículo nos das la chapa acerca de que no debemos instalar nunca Dockers que no provengan de desarrolladores oficiales y ahora me mandas instalar algo de un ¿hacker Ruso?. El experto en docker que nos has presentado hace un par de tutoriales no estaría de acuerdo con ésto.
¿Pero qué hacker ruso ni qué…? A ver: WG-Easy es un proyecto que intenta resolver dos problemas: Por un lado hacer la instalación de Wireguard mucho más sencilla y por otro darnos un interfaz gráfico para gestionar los usuarios. El proyecto está publicado en Github, donde puedes ver los nombres de los desarrolladores. Y si aún así tienes dudas sobre si este software es maligno, eres completamente libre de inspeccionar el código y compilarlo por tu cuenta para comprobar que no tiene ningún virus ni sorpresas ocultas (Esa es la magia del software libre).
Sin más preámbulos vamos a seguir el mismo esquema que usamos en el artículo de Pi-hole para no liarnos en estos primeros pasos.
Ya, ya, si todo muy bien, pero resulta que mi gato hoy estuvo paseándose por el teclado. No sé qué pasó, pero el docker ahora no me está funcionando bien. Voy a reinstalar todo para...
¡Espera! Cuando tienes problemas con Docker, antes de optar por soluciones extremas, primero hay que intentar saber qué es lo que está pasando. En este artículo vamos a pararnos para ver algunos comandos útiles cuando tenemos una instalacion de Docker entre las manos. Docker no sólo es instalar un Docker y ya está. Si queremos aprender a manejarlo con soltura y a resolver incidencias con él, todo lo que veamos en éste artículo nos va a resultar muy útil.
Tened claro que en este artículo no vamos a hacer instalaciones de ningún Docker a mayores en nuestro equipo. Es un artículo meramente informativo y orientado a ampliar y asentar los conocimientos que estamos adquiriendo acerca de este sistema.
Comandos para manejar imágenes.
Como ya os dije en el segundo artículo, una imagen es algo similar a un paquete de instalación de un programa. Tiene todo lo que necesita el software que vamos a instalar para que funcione correctamente (sistema operativo, bibliotecas y código del programa), pero no se está ejecutando continuamente, sino que la imagen sólo se usa en el momento de la instalación para crear lo que luego llamaremos el contenedor.
Hay algunos comandos útiles para gestionar estas imágenes. Veámoslos.
En el primer tutorial que hemos hecho en esta serie, hemos visto cómo podemos instalar correctamente el último sistema operativo a una Raspberry. El segundo artículo era mucho más teórico y en él hemos aprendido qué es Docker, para qué sirve, ventajas que tiene y también lo hemos instalado en nuestra Raspberry (o en nuestro Debian, que también hemos enseñado cómo se instala en ese sistema), de forma que el dispositivo ha quedado preparado para poder añadirle todos los Dockers que queramos.
Ahora vamos a empezar la juerga. En este artículo vamos a instalar nuestro primer Docker, y recordad que aunque estoy orientando este tutorial a Raspberrys, es aplicable también a cualquier dispositivo que use una distribución Linux derivada de Debian (Ubuntu Server, por ejemplo). El objetivo es tener un servidor doméstico que nos haga un montón de cosas en nuestro hogar, y creo que empezar instalando «Pi-Hole» es un buen comienzo.
Me suena eso de Pi-hole. ¿No lo habíamos instalado ya en otro artículo?
Sí Usuario Anónimo. Lo habíamos instalado en este tutorial, pero de forma tradicional, sin usar docker. En este caso vamos a usar esta tecnología para usarlo y mantenerlo «encapsulado», de forma que no interfiera en otros procesos. En concreto usaremos docker compose tanto en este como en los siguientes tutoriales. Usaremos esta primera instalación como guía principal para los artículos posteriores en los que no nos vamos a parar tanto en explicaciones.
Para los que no lo conozcan, Pi-hole es un programa que actúa en nuestra red como servidor de DNS, pero es un servidor de DNS muy especial, porque lo que hace es quitarnos la publicidad de las aplicaciones de todos los dispositivos de nuestro hogar. Incluso en dispositivos en los que es imposible instalar un bloqueador de publicidad (como en una televisión) nos permite que el dispositivo no muestre publicidad en ningún momento. Es más: imagínate que invitas a alguien a tu casa y le das la contraseña del WiFi. Por el simple hecho de conectarse a tu WiFi, esa persona ya estaría navegando sin publicidad.
Pues sí que mola. Pues hala: dinos ya cómo se instala que tú en seguida te dispersas.
Tal y cómo dije, vamos a seguir la misma estructura en las instalaciones posteriores, así que tened los puntos principales de este artículo siempre bien claros.
Hemos visto en nuestro último artículo cómo instalar la última version de Raspberry Pi OS en una Raspberry, de forma que quede lista para funcionar como servidor. A partir de ahora vamos a ver cómo instalar varios programas que harán que nuestra Raspberry se convierta en un magnífico servidor doméstico. Sin embargo vamos a instalarlos de una forma un poco especial. En lugar de instalar los programas directamente en el sistema operativo, vamos a usar Docker para meter cada uno en un contenedor separado para que…
Espera, espera. ¿Por qué te complicas tanto la vida? ¿Para qué me va a interesar hacer cosas raras con los programas que vamos a instalar si al final el objetivo es simplemente que funcionen? ¿No podemos simplemente instalarlos y ya está? Hay que ver cómo te gusta retorcer las cosas, majete.
Si no tuviera sentido no estaría aquí dando la chapa y estaría escribiendo sobre otra cosa, Usuario Anónimo. En realidad, sobre todo en servidores, tiene mucho sentido usar Docker en lugar de instalaciones directas de los programas. En este artículo vamos a ver, en primer lugar las ventajas de usar Docker respecto a hacer instalaciones directas para montar un servidor. Luego analizaremos qué tipos de Dockers son los más adecuados para su uso en pequeñas instalaciones y por último aprenderemos a instalar Docker tanto en una Raspberry como en un servidor Debian.
Vale... lo que quieras, pero ¿Qué demonios es eso de docker?
Tiene razón. Debería haber comenzado por ahí. Hazte la imagen mental de que Docker es como un conjunto de archivos empaquetados, sólo que con la característica de que tienen todo lo necesario para que funcione la aplicación que quieres usar (y cuando digo todo lo necesario me refiero a TODO. Archivos, dependencias, librerías, configuraciones, etc…). En lugar de hacer la instalación de la aplicación, haces la instalación de ese docker en concreto, y si lo has hecho correctamente, todo debería funcionar exactamente igual que haciendo la instalación de la forma «tradicional».
Que sí. Vale. Hurra por empaquetar todo, pero ¿Eso de qué me sirve? Si me estás diciendo que al final va a funcionar todo igual. Sigo preguntándome para qué te complicas tanto la vida.
Te voy a poner varios ejemplos en los que vas a ver claro que instalar de esta forma las aplicaciones en un servidor tiene su utilidad.
1) Ventajas de usar Docker en un servidor.
Caso 1: Aplicaciones separadas que requieren versiones diferentes de componentes del sistema (Gestión de dependencias)
Imagina que, por ejemplo, quieres instalar en un único equipo dos aplicaciones que actúen como servidores independientes, por ejemplo, un servidor de Nextcloud y un servidor de OSTicket (podrían ser otro tipo de servicios. Esto sólo es un ejemplo). Puede que la configuración que requiera uno de estos servicios sea diametralmente opuesta a la que requiere el otro. Por ejemplo, puede que uno necesite un componente de linux superior a la versión 8, pero el otro sólo pueda trabajar con versiones inferiores a la 7. En este caso no podrían coexistir las dos instalaciones en el mismo sistema. Docker resuelve este problema, porque cada una de las instalaciones se convertiría en completamente independiente de la otra al estar empaquetadas en dos contenedores distintos. Cada una podría tener sus componentes y ser incompatibles los de un contenedor con el otro, pero funcionar de forma independiente. Cada contenedor sólo debe preocuparse en satisfacer las dependencias de sus componentes, sin preocuparse de las dependencias de otros contenedores que corran en el mismo sistema operativo base.
Caso 2: Paradas, cuelgues o reinicios controlados de una única aplicación.
Imagina ahora que tenemos de nuevo dos aplicaciones en el mismo hardware. Ambas usan el servidor Apache y hemos hecho cambios en una de ellas, pero hemos metido la pata hasta el fondo y ahora, por el motivo que sea, el servicio apache no arranca. Si hubiéramos hecho la instalación de las dos aplicaciones sobre el mismo servidor sin «empaquetarlas», ambas se verían afectadas por la incidencia y ninguna de las dos funcionaría. Con Docker, al correr cada una de forma independiente en dos servidores Apache independientes, lo que hagamos en una no interfiere nunca en lo que hagamos en la otra, por lo que nos podemos equivocar y estropear uno de los dockers pero el otro no se vería afectado en absoluto. Se habrá caído el primero y lo deberemos arreglar, pero el segundo ni se entera. Es más… podemos parar o reiniciar completamente uno de los Dockers y el otro simplemente seguiría funcionando sin preocuparse de lo que hubiera pasado fuera de su empaquetado. Al final, la única forma en la que un contenedor de Docker pueda afectar a otros es que esos contenedores compartan recursos (almacenamiento o tráfico de red). Por ejemplo, si un contenedor se pone a escribir datos en el disco sin parar y llena el disco, evidentemente puede poner todo el sistema en riesgo, pero supongo que entiendes que es un caso muy concreto y obvio.
Caso 3: Rollbacks controlados..
Ahora imagina que sólo tenemos una aplicación. Le hemos realizado una actualización pero descubrimos que esta nueva versión tiene un fallo crítico o no es compatible con ciertos componentes del sistema. En un entorno sin Docker, volver al estado anterior (rollback) puede llegar a ser complicado y arriesgado. A lo mejor tenemos que revertir cambios en todo el sistema y podríamos estar afectando a otras aplicaciones. Sin embargo, con Docker, podemos realizar rollbacks de manera controlada y aislada. Podemos volver a una versión anterior de la imagen de Docker de esa aplicación específica sin afectar otras partes del sistema. Esto nos daría tranquilidad a la hora de deshacer cambios (sabríamos que aunque tocáramos esa aplicación, el resto del sistema se mantendría estable).
Caso 4: Portabilidad
Si hemos desplegado nuestra aplicación en Docker, podremos llevarla junto con todas sus dependencias a cualquier otro equipo que tenga Docker instalado, ya sea en la nube o en un servidor local. Y esto en particular es algo que está muy bien. Por ejemplo, podemos probar nuestra aplicación en un entorno local y si vemos que funciona correctamente, luego podemos migrarla a entorno de producción o a una máquina en la nube sin tener que preocuparnos por configuraciones complicadas o diferencias en el sistema operativo principal de la máquina. Por ejemplo, podemos pasar una aplicación que ya está funcionando en un Debian a un Red Hat o viceversa. Y de nuevo… ¡¡Esto mola mucho!!
Caso 5: Escalabilidad
Esto es algo que viene derivado del caso 4. Imaginaos que tenemos una aplicación en producción (por ejemplo una página web). Funciona perfectamente, pero vemos que nuestra página ha tenido un éxito inusitado y cada vez entra más y más gente y nuestro servidor empieza a no ser suficiente para tramitar tantas peticiones. Las solicitudes de nuestros usuarios empiezan a ir más lentas e incluso se caen. La portabilidad de Docker nos permitirá migrar todo a un servidor más rápido de forma sencilla, otorgándole más recursos en un nuevo sistema.
Y para los más técnicos sólo una puntualización sobre este último punto: para escalar de forma eficiente hay más herramientas que facilitan esta labor y que no vamos a explicar en este artículo (como kubernetes). De momento no vamos a entrar en ellas.
Podría poner más ejemplos, pero creo que a grandes rasgos se entiende que en un servidor mola mucho tener las aplicaciones dockerizadas. Te da mucha libertad a la hora de cambiar la aplicación de servidor y el hecho de tener dependencias separadas puede resolver muchos problemas.
Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.