Installer docker sur Raspberry Pi

Dans une série d'articles sur le ClusterHat, il a été présenté comment créer un super serveur Web utilisant trois Pi Zero en équilibrage de charge et un Pi Zero pour la base de données MySQL.
La configuration décrite alors s'appuyait sur l'architecture physique du cluster en dédiant un Pi pour chaque fonction. Mais l'intérêt principal d'un cluster est de pouvoir embarquer plusieurs applications ou plusieurs services mobilisant des ressources de taille variable sans trop avoir à se préoccuper de leur localisation physique. C'est cette fonction que permet docker.

Installation de docker

L'installation de docker doit être effectuée sur tous les serveurs du cluster, y compris sur le contrôleur du cluster (ici le Raspberry Pi 3 servant de base au ClusterHAT).
Afin de simplifier l'installation de docker, Docker fournit sur son site web (get.docker.com), un script bash permettant de l'installer en une seule ligne de commande :

pi@Cluster01:~ $ curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh

...

Configuration de docker

Même si le script ci-dessus réalise la majorité des actions de configuration nécessaires, quelques unes peuvent être ajoutées, comme, par exemple, la possibilité d'utiliser docker sans passer par sudo en mode administrateur. Cela nécessite le lancement de trois commandes :

Créer un groupe d'utilisateur pour docker

pi@Cluster01:~ $ sudo groupadd docker

...

Cette commande permet de créer un nouveau groupe d'utilisateurs nommé docker. Dans la version 18.06 du script d'installation (celui-utilisé au moment de la rédaction de cet article), le groupe est déjà créé.

Ajouter les utilisateurs au groupe docker

pi@Cluster01:~ $ sudo gpasswd -a $USER docker

...

Cette commande ajoute l'utilisateur courant (pi, en l’occurrence) au groupe docker. Il est possible d'ajouter tous les utilisateurs habilités à utiliser docker dans ce groupe. Pour cela, il suffit de répéter la commande en remplaçant $USER pour leurs identifiants respectifs.

Valider les changements dans le groupe docker

En principe, pour que ces changements soient pris en compte, il faut déconnecter puis reconnecter l'utilisateur. Mais cette opération peut être évitée en lançant la commande ci-dessous :
pi@Cluster01:~ $ newgrp docker

...

Tester l'installation de docker

Le script d'installation ci-dessus inclue un container d'exemple nommé hello-world. Celui-ci va nous permettre de tester l'installation de docker. Pour cela il suffit de demander à docker d'embarquer ce container :
pi@Raspi04:~ $ docker run hello-world

Hello from Docker!
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.
    (arm32v7)
 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 ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

pi@Raspi04:~ $

Et après ?

Pour appréhender docker, je me suis appuyé sur l’excellent livre ci-dessous :
Docker
Prise en main et mise en pratique d'une architecture micro-services
Jean-Philippe GOUIGOUX
ENI
Ce livre décrit comment utiliser docker pour embarquer divers types de containers.
Un article intitulé "Utilisation de swarm pour répartir le déploiement de containers dans un cluster" complétera l'utilisation de docker avec le ClusterHAT du Raspberry Pi.

Commentaires

Posts les plus consultés de ce blog

Gérer la mise en veille

Configurer VSCode pour programmer et déboguer à distance sur Raspberry Pi

Créer un nouvel utilisateur Raspbian