Home Instalación de Docker en Raspberry Pi 4
Post
Cancel

Instalación de Docker en Raspberry Pi 4

Instalamos el gestor de contenedores Docker en una Raspberry Pi 4 ejecutando Raspberry Pi OS y configuramos Portainer, un gestor de contenedores.

¿Qué es Docker? ¿Contenedores? ¿Virtualización? ¿Eh?

Docker es un gestor de contenedores, pero, ¿qué son los contenedores? Los contenedores pueden entenderse cómo «paquetes de software»; agrupan TODO el código necesario para que un programa/aplicación funcione de forma que su ejecución es independiente del entorno.

Esto plantea muchas ventajas entre las que vamos a destacar:

  • Añadir y eliminar contenedores sin que esto afecte a otros contenedores.
  • Parar y arrancar contenedores sin que esto afecte a otros contenedores.
  • Poder ejecutar distintas versiones del mismo software (ej: distintas versiones de Python) sin que existan conflictos entre aplicaciones (ej: podemos ejecutar una aplicación que requiere Python 2 en un contenedor y otra aplicación que precisa Python 3 sin que ello cause problemas).
  • Muchas más ventajas…

Esto a priori podría confundirse fácilmente con las máquinas virtuales (Virtualización) pero NO es lo mismo. Los contenedores son piezas más ligeras, que emplean el propio SO sobre el que se ejecuta el contenedor. La diferencia puede verse a grandes rasgos en este esquema:

Organización de Docker Organización de la Virtualización

Lista de componentes

  • Raspberry Pi 4 con sus respectivos adaptadores.
  • Tarjeta microSD (preferiblemente 32Gb o más).
  • Nuestro ordenador de trabajo con conexión a internet.
  • Alrededor de 30 minutos de tiempo libre.

Instalar Raspberry Pi OS

Ya que estamos usando una Raspberry Pi 4, vamos a configurar el sistema operativo oficial, Raspberry Pi OS. Vamos a instalarlo y configurar el SSH para trabajar completamente desde la consola en nuestro PC de trabajo. ¡Todo esto ya lo explicamos paso a paso en una entrada previa!

Instalando Docker

Una vez completada la instalación de Raspberry Pi OS y ahora que ya estamos conectados a la misma mediante la consola de Putty, Windows o similar, vamos a instalar Docker mediante un único comando muy muy simple.

1
curl -sSL https://get.docker.com | sh

¿Qué es cada cosa aquí? El comando curl (abreviatura de Client URL) es un comando para trabajar con archivos contenidos en URLs, en este caso, con el contenido que se encuentra en la dirección https://get.docker.com. La opción -sSL indica que se emplee la transferencia segura de datos usando certificado.

Si abrimos la URL https://get.docker.com veremos que se trata de una larga lista de comandos a ejecutar, de ahí que empleemos el comandosh. El símbolorepresenta lo que en Linux se conoce cómo tuberías o pipelines e implica que los comandos de la izquierda (curl -sSL https://get.docker.com) se ejecutan según el comando de la derecha; esto es, todo el contenido del fichero disponible en https://get.docker.com se ejecutará en consola (shell) con sh.

En resumen, el fichero que hay en https://get.docker.com contiene MUCHAS instrucciones y lo que hacemos es «automatizar» la ejecución de todas esas instrucciones. Otra opción sería ejecutar cada instrucción manualmente pero Docker nos provee esta vía para instalar Docker evitando así errores; no obstante, conviene siempre consultar cuales son las instrucciones que se van a ejecutar al hacer un curl, aunque en este caso, hablamos de la web oficial de Docker.

Extracto de la instalación de Docker

Verificando la instalación

Una vez introducido el comando anterior, esperamos unos minutos hasta que volvamos a ver la entrada de comandos limpia. Para probar que todo ha ido bien, escribimos docker y deberíamos ver una salida cómo esta con muchas opciones disponibles.

Verificación de la instalación de Docker

Ahora, vamos a garantizarnos el permiso de ejecutar comandos sin problemas, para lo cual añadimos el usuario pi al grupo de usuarios docker mediante el comando usermod.

1
sudo usermod -aG docker pi

Donde -aG indica “add group” y especificamos que queremos añadir el usuario pi al grupo de usuarios docker.

Levantando Portainer

Mucha gente suele ejecutar cómo primer contenedor el famoso hello-world que básicamente es un contenedor de prueba que sólo devuelve un mensaje de texto para verificar el funcionamiento. En mi caso voy directamente a instalar Portainer.

Portainer no es más que una interfaz gráfica para Docker. Nos permite hacer todo lo que normalmente hacemos desde la consola pero desde una interfaz más «amigable» a través del navegador. Portainer en si mismo ES un contenedor, así que para instarlo sólo tenemos que introducir:

1
sudo docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:linux-arm

Podemos consultar todos los detalles desde la web oficial: https://documentation.portainer.io/v2.0/deploy/ceinstalldocker

La opción sudo docker run llama a Docker especificándole el puerto en el que quiere que exponga el servicio (el puerto desde el que será accesible Portainer), el nombre del contenedor, la opción de reiniciar el contenedor ante los fallos que pudieran producirse, etc.

Configurar Portainer

Una vez ejecutemos el comando anterior, Docker comprobará si tiene la imagen necesaria; dado que no la tiene descargada todavía, la descargará e instalará automáticamente, llevándonos a la siguiente salida:

Pull de la imagen de Portainer

Ahora que está instalado, todo lo que nos queda es acceder a su interfaz desde el navegador y configurar un nuevo usuario/contraseña para gestionarlo. Ya conocemos la IP de nuestra Raspberry dado que estamos conectados vía SSH y si no hemos cambiado el puerto al que exponemos Portainer, se accede cómo:

192.168.1.255:9000; donde la IP será en cada caso la de nuestra Raspberry Pi y el puerto por defecto es el 9000 si no lo hemos modificado antes.

Esto nos lleva a la siguiente pantalla:

Pantalla configuración inicial Portainer I

Introducimos unas credenciales seguras y creamos el usuario nuevo, tras lo cual, debemos elegir el tipo de uso:

Pantalla configuración inicial Portainer II

Seleccionamos Docker y le damos a Connect. En unos segundos vemos el panel de control de Portainer.

Portainer UI

Vemos conectado un sistema (endpoint) Docker bajo el nombre de local que representa el Docker instalado en nuestra Raspberry Pi; los endpoints es la forma en que Portainer se refiere a los “esclavos” que están bajo su control, en este caso solo uno. Si lo seleccionamos veremos detalles concretos de que contenedores hay instalados, volúmenes, redes, etc.

Detalles del endpoint

Próximos pasos

Ya hemos acabado; Docker y Portainer están instalados y listos para ejecutar nuevos contenedores. Muchas aplicaciones de entornos muy diversos (multimedia, organización, domótica, seguridad, etc.) distribuyen imágenes de sus softwares listas para Docker.

Una web útil para consultar imágenes disponibles para Docker, junto con su configuración, está disponible en DockerHUB. Aunque hemos visto que la forma de instalar contenedores se hace mediante docker pull / docker run, veremos en una próxima entrada, cómo funciona Docker Compose, una vía alternativa para especificar la configuración de los contenedores mediante ficheros .yaml. Podéis leer más aquí.

Consideraciones: Una Raspberry Pi 4B es una máquina bastante potente para ciertas tareas pero hay que tener en cuenta sus limitaciones; a la hora de hacer pull de alguna imagen, es preferible consultar primero cual puede ser su uso de memoria.

This post is licensed under CC BY 4.0 by the author.

Instalación de MariaDB en Home Assistant

Instalación y configuración de receptor Zigbee en Home Assistant