Tutoriales, noticias y soluciones informáticas

Etiqueta: volúmenes

PiServer con Docker – Parte 6: Ejercicios de despliegue de Docker usando gestores de descargas P2P

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.

Nube P2P
  • 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! 
Amigos viendo contenido descargado en P2P

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.

Seguir leyendo
Share

PiServer con Docker – Parte 4: Gestión de imágenes, contenedores, volúmenes y logs de Docker

En el pequeño reguero de artículos que hemos hecho sobre Docker en Raspberry Pi, hemos aprendido primero a instalar el último sistema operativo en el dispositivo, luego hemos aprendido qué es un Docker y cómo instalarlo y por último hemos instalado nuestro primer Docker en el dispositivo (Pi-hole).

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.

Seguir leyendo
Share

PiServer con Docker – Parte 3: Instalación de Pi-Hole.

Página web de Pi-hole

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?
Router

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.

Seguir leyendo
Share

PiServer con Docker – Parte 2: ¿Qué es Docker? Ventajas, componentes, tipos de Dockers e instalación.

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.

Seguir leyendo
Share

© 2024 Flopy.es

Tema por Anders NorenArriba ↑

Uso de cookies

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.

ACEPTAR
Aviso de cookies