Servidor Raspberry Pi 4 B - Instalando Docker

Servidor Raspberry Pi 4 B - Instalando Docker
Photo by Ian Taylor / Unsplash

Bienvenido a la tercer entrega de ésta serie de Convirtiendo una Raspberry Pi 4 Model B en un poderoso servidor casero, en el articulo anterior vimos como agregar almacenamiento externo a nuestra Raspberry con un disco USB y usando LVM. Hoy vamos a usar esos mismos pasos para crear un nuevo Volumen Lógico (LV) que en mi caso llamé dockervol y lo vamos a usar posteriormente para que sea el directorio por defecto de Docker.

Bueno primero lo primero, llegados a este punto es casi seguro que la persona promedio que sigue ésta serie ya sabe que es Docker e incluso seguramente ya tiene algo o mucha experiencia, sin embargo para los interesados en profundizar en el tema los invito a visitar https://www.docker.com/

Por mi parte les diré porque es importante usar Docker en nuestro Servidor Raspberry y es precisamente porque debemos aprovechar los recursos de nuestra Raspberry al máximo, y Docker nos permite ejecutar múltiples servicios usando el mismo Kernel de nuestro Sistema Operativo (Manjaro en esta serie), pero manteniendo de forma aislada las dependencias de cada uno de estos mediante contenedores.

Ahora bien se preguntarán porque creamos un volumen nuevo al comienzo del articulo (Sino lo has creado aun te invito a seguir los pasos mencionados en el capitulo 2), bueno y es que Docker necesita almacenamiento para descargar las imágenes de las aplicaciones que vamos a ejecutar y guardar información de los contenedores como redes, configuraciones, datos, etc. Por defecto este almacenamiento se ubicaría en el sistema de archivos raíz que en el caso de la Raspberry es la memoria micro SD, pero usarla de esa manera es bastante limitado sino contamos con una lo suficientemente grande, sin contar el costo de las mismas. Pero ya que tenemos un almacenamiento USB lo que haremos es hacer que dicha información ahora se almacene fuera de la micro SD y así ampliar nuestras posibilidades.

Manos a la obra:

Lo primero es instalar docker y docker-compose:

sudo pacman -S docker docker-compose

Finalizada la instalación ahora necesitamos modificar el servicio de docker para que use nuestro volumen dockervol que en mi caso lo monté en /mnt/dockervol, para ello necesitamos crear el archivo /etc/docker/daemon.json

sudo vim /etc/docker/daemon.json

Oprimimos i para habilitar el inserción de texto y pondremos el siguiente contenido

{
    "data-root": "/mnt/dockervol/var_lib_docker"
}

Para guardar oprimiremos : seguido de wq y la tecla enter.
Con la configuración lista ahora vamos a copiar la configuración base al nuevo directorio

sudo mkdir /mnt/dockervol/var_lib_docker
sudo rsync -aHv /var/lib/docker/* /mnt/dockervol/var_lib_docker

Ahora si debemos iniciar el servicio y habilitarlo para que inicie automaticamente, cada vez que booteamos nuestra Raspberry.

sudo systemctl start docker.service
sudo systemctl enable docker.service

Ahora debemos garantizar que nuestro usuario haga parte del grupo docker

sudo usermod -aG docker $USER

En este punto ya deberiamos tener docker funcionando y configurado en el almacenamiento externo, para validarlo podemos ejecutar docker info | grep "Docker Root" y ver algo como esto:

...
 Docker Root Dir: /mnt/dockervol/var_lib_docker

Para cerrar este capitulo vamos a ejecutar un contenedor de prueba en este caso particular nginx en su versión alpine:

docker run --name nginx-prueba -p 8590:80 -d nginx:alpine

Ahora iremos a nuestro navegador pondremos la IP de nuestra Raspberry y el puerto 8590, por ejemplo http://192.168.1.25:8590 y debemos ver algo como:

Página de bienvenida de nginx

Para eliminarlo ejecutaremos docker stop nginx-prueba && docker rm nginx-prueba

Nuevamente gracias por llegar hasta el final de éste tercer capitulo, en nuestra próxima aventura hablaremos de como instalar Nextcloud como nube privada usando Docker.