La forma fácil de configurar Docker en una Raspberry Pi

Docker es una herramienta muy útil para ejecutar versiones en contenedores de aplicaciones populares (como bases de datos) o configurar algún servicio de IoT en un dispositivo conectado a Internet.

Pero la instalación de Docker a veces puede ser una molestia si debe realizarse varias veces en diferentes computadoras. El lado positivo, sin embargo, es que hay un truco útil escondido en los documentos de Docker que detallan cómo instalar Docker con solo dos líneas en la terminal.

¡Sí, escuchaste bien! Con solo dos líneas puede cargar e instalar Docker.

La instalación de Docker se puede gestionar mediante un script bash que automatizará toda la instalación. Docker proporciona dicho script en get.docker.com. El primer comando consumirá esta URL, buscando un archivo llamado get-docker.sh. Una vez obtenido, simplemente ejecutamos el script. Los dos comandos se pueden encadenar para formar una declaración como:

curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh

Ahora tiene Docker instalado y la instalación solo tomó dos líneas.

Como acaba de ver, los dos comandos anteriores están encadenados mediante el operador '&&'. Esto significa que los comandos se ejecutarán uno tras otro, pero se pueden escribir en la misma línea.

Sin embargo, un pequeño problema es que puede experimentar dificultades para ejecutar comandos de Docker sin sudo. Esto se puede arreglar, pero necesitará algunas líneas más.

Cómo configurar Docker para que se ejecute sin usar sudo todo el tiempo

Descubrí esta solución en AskUbuntu después de encontrar el problema. Repasemos ahora.

Hay 3 pasos:

  1. Agregue el grupo de Docker si aún no existe:
sudo groupadd docker

2. Agregue el usuario conectado "$ USER" al grupo de la ventana acoplable. Cambie el nombre de usuario para que coincida con su usuario preferido si no desea utilizar su usuario actual:

sudo gpasswd -a $USER docker

3. Desde aquí tiene dos opciones: cerrar sesión y luego volver a iniciar sesión, o ejecutar newgrp dockerpara que los cambios surtan efecto.

Ahora debería poder ejecutar Docker sin sudo. Para probar, intente esto:

docker run hello-world

Si funcionó, debería ver un hermoso mensaje de Docker:

Una vez más, todo el crédito por esta solución es para esta gran respuesta de AskUbuntu que encontré. Sin escribir sudo todo el tiempo, será mucho más fácil trabajar con los comandos.

¡Pero espera hay mas!

¿Y si también quieres docker-compose? Puede intentar instalar la fuente docker-compose de manera similar a como instalamos Docker. Un enfoque interesante que encontré en los documentos de Google Cloud Engines es que en realidad puedes ejecutar docker-compose como un contenedor.

Si lo hace, significa que tiene una instalación desechable de docker-compose que se utilizará para componer sus servicios. En cualquier momento, puede tirarlo y repetir los pasos para crear una ventana acoplable nueva.

El primer paso será ejecutar docker-compose como un contenedor y darle acceso a los volúmenes.

docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:/rootfs/$PWD" \ -w="/rootfs/$PWD" \ docker/compose:1.13.0 up

A continuación, cree un alias para docker compose:

echo alias docker-compose="'"'docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:/rootfs/$PWD" \ -w="/rootfs/$PWD" \ docker/compose:1.13.0'"'" >> ~/.bashrc

Luego recarga bash:

source ~/.bashrc

Ahora tiene acceso completo a docker-compose. El alias definido anteriormente significa que, en lugar de tener que escribir comandos de la ventana acoplable cuando desee usar el contenedor de redacción, puede usar 'docker-compose' como lo haría normalmente.

Aviso importante sobre Docker en RPi

Raspberry Pi usa la arquitectura ARM y, como resultado, no será compatible con todos los contenedores listos para usar. Las imágenes deberán construirse a partir de una imagen base ARM.

Puede ver esto en acción ejecutando una instancia de Redis en contenedores en una Raspberry Pi (que es bastante relevante para una próxima serie que estoy escribiendo). Hacerlo requerirá trabajar con una imagen base. Siempre que utilicemos una imagen compatible con ARM, no deberían surgir problemas. El problema es encontrar uno bien mantenido.

Si te ha gustado este artículo, dale una palmada.

Tengo otras publicaciones en mi página relacionadas con Microservicios, Ionic y más.