Instalar Docker en raspbian (raspberry)

Hoy día ¿Quién no ha oído hablar de contenedores? no iría muy desencaminado si digo que quien no sepa de qué va la cosa es porque está bastante desconectado del mundo de la informática.

¿Qué es Docker?

Aunque el cometido de este artículo es simplemente explicar cómo se instala Docker en nuestra raspberry, creo interesante hacer una pequeña introducción para que sepamos de qué estamos hablando.

Docker es una plataforma de software de código abierto que viene a facilitar la automatización del despliegue de aplicaciones en entornos Linux. Esto lo hace valiéndose de las capacidades del kernel de Linux para aislar recursos.

De este modo de permite la ejecución de contenedores independientes los cuales dentro ejecutan ciertas aplicaciones y servicios aislados los unos de los otros.

Realmente cada contenedor actúa como si de una máquina virtual se tratase, aunque esto es una aproximación conceptual, ya que no se trata realmente de máquinas virtuales, sino de entornos de ejecución aislados. Sobre docker podemos ejecutar N contenedores que vienen a ser instancias en ejecución de lo que llamamos imágenes.

Existen multitud de imágenes oficiales y creadas por usuarios en Docker Hub, donde podremos partir de una imagen de Ubuntu, arrancar un contenedor de la imagen de Ubuntu y trastear lo que queramos, luego eliminar ese contenedor y nuestro sistema quedará sin cambios. Repito, el uso es similar al de una máquina virtual, pero NO ES UNA MÁQUINA VIRTUAL.

Más info en el artículo de wikipedia.

Comenzamos la instalación

Para centrarnos vamos a partir de la instalación de raspbian que venimos usando en uno de nuestros últimos artículos de este blog.

Para comenzar nos conectaremos por SSH al sistema y actualizaremos los repositorios.

ssh pi@192.168.0.222
sudo apt-get update && sudo apt-get upgrade

Una vez tengamos el sistema actualizado, empezaremos por instalar algunos paquetes necesarios para nuestra instalación:

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Una vez instalados los paquetes estos, procederemos a añadir las claves GPG de Docker.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Una vez finalizada la operación veremos el OK en en prompt.

Ahora necesitaremos añadir el repositorio de software de docker para procesadores armhf (rama estable), para lo cual ejecutaremos el siguiente comando:

echo "deb [arch=armhf] https://download.docker.com/linux/debian \
     $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list

Ahora actualizamos nuestra lista de paquetes con el repositorio de docker:

sudo apt-get update

Una vez actualizado podemos proceder a realizar la instalación propiamente dicho.

suto apt-get install docker-ce

Ahora que el sistema ha sido instalado vamos a realizar unas operaciones para poder utilizar docker como usuario sin privilegios.

Para ello comenzaremos creando el grupo docker con la siguiente orden

sudo groupadd docker

Luego añadiremos nuestro usuario a ese grupo

sudo usermod -aG docker $USER

Por último haremos logout y login en el sistema para comprobar los cambios.

exit
ssh pi@192.168.0.222

Para verificar que la instalación ha sido correcta ejecutaremos el siguiente comando

docker run armhf/hello-world

Veremos una salida similar a la siguiente:

Unable to find image 'armhf/hello-world:latest' locally
latest: Pulling from armhf/hello-world
a0691bf12e4e: Pull complete 
Digest: sha256:9701edc932223a66e49dd6c894a11db8c2cf4eccd1414f1ec105a623bf16b426
Status: Downloaded newer image for armhf/hello-world:latest

Hello from Docker on armhf!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

En la salida anterior se observa que docker no encuentra la imagen ‘armhf/hello-world’ en nuestra máquina, se lo descarga de docker hub y ejecuta la imagen de prueba. Esta salida es señal de que la instalación ha sido un éxito.

Ya tenemos nuestra raspberry preparada para adentrarnos en el mundo de los contenedores!!