Docker est un outil populaire qui permet de créer, déployer et exécuter des applications dans des conteneurs.L’objectif de l’article n’est pas d’expliquer ce qu’est Docker, ni comment s’en servir mais simplement d’effectuer une installation sur un Raspberry PI. L’avantage d’utiliser des conteneurs sur un Raspberry Pi est de pouvoir tester ou mettre en prod des applications rapidement sans polluer son système.
Au sommaire :
Installer Docker sur Raspberry Pi
On peut voir un conteneur comme une machine virtuelle à laquelle on supprime la couche système d’exploitation.
Pré-requis
- Un raspberry avec Raspbian OS d’installé. Les RPI ZERO/2/3/4 sont supportés
- Une connexion SSH ou un accès terminal direct à la machine
Installation de Docker
Avant de commencer, il est important d’avoir un système à jour.
[stextbox id=’grey’]sudo apt-get update && sudo apt-get upgrade[/stextbox]
On télécharge le script officiel d’installation
[stextbox id=’grey’]curl -fsSL https://get.docker.com -o get-docker.sh[/stextbox]
On exécute le script
[stextbox id=’grey’]sudo sh get-docker.sh[/stextbox]
Docker est à présent installé sur le RPI. On va donner les droits à l’utilisateur « pi » de l’utiliser en l’ajoutant au group « docker »
[stextbox id=’grey’]sudo usermod -aG docker pi[/stextbox]
Pour appliquer cette dernière commande, il faut relancer la session de notre utilisateur. Pour cela vous pouvez simple relancer un terminal, vous reconnecter en SSH ou redémarrer le RPI.
On test que tout fonctionne en lançant le conteneur hello word
[stextbox id=’grey’]docker run hello-world[/stextbox]
Qui devrait vous retourner quelque chose comme ça
[stextbox id=’grey’]
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
4ee5c797bcd7: Pull complete
Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e
Status: Downloaded newer image for hello-world:latest
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
[/stextbox]
Et voila! Un Docker fonctionnel sur Rasp.
Installation de Docker Compose
Petit bonus, Docker compose. Cet outil est un mini orchestrateur de conteneur. Il permet, au travers d’un fichier YAML, de décrire une topologie de conteneurs fonctionnant ensemble afin de délivrer un service. Par example, si vous voulez déployer serveur Owncloud sur votre RPI, vous auriez un fichier compose qui contiendrait l’image du service Ownloud et l’image du serveur de base de données, par example MySQL.
Docker compose est un programme écrit en python. Il est installable via PIP.
On commence par installer quelques prérequis système:
[stextbox id=’grey’]sudo apt-get install python3-distutils python3-dev libffi-dev libssl-dev[/stextbox]
On installe la dernière version du manager de packet Python PIP avec python3 bien entendu (python2 is dead)
[stextbox id=’grey’]
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py
[/stextbox]
On peut installer Compose:
[stextbox id=’grey’]sudo pip3 install docker-compose[/stextbox]
Terminé !
Note importante
Le Raspberry PI est basé sur une architecture ARM. Les images Docker sont, pour beaucoup, uniquement disponible pour les architectures plus standard comme x86_64.
Vous pouvez mettre un filtre sur Docker Hub de façon a lister les images compatibles Raspberry.
Dans certains cas, builder le Dockerfile d’une image depuis le Raspberry plutôt que la récupérer (pull) depuis Docker Hub permet de la faire fonctionner.
Ping : Installer Docker sur Raspberry Pi – Framboise 314, le Raspberry Pi à la sauce française…. – Jhc Info
Ping : Piclodio: transformez votre Raspberry en web radio réveil - Framboise 314, le Raspberry Pi à la sauce française....
Hello,
Pour les architectures ARM, je ne sais plus quel est le niveau en fonction des générations de raspberry, mais je crois savoir que chez les Pi, on peut trouver de l’architecture ARM v6 (32bits) ARM v7 (32bits) ou ARM v8 (64bits).
Pour docker, c’est arm32v6 arm32v7 ou arm64v8.
Sur les pi 3 et 4, je fais tourner des images arm32v7 ou arm64v8 selon les OS installés (raspbian en 32 bits, ubuntu core en 64bits).
Je vais prochainement essayer alpine 32 et 64 bits…
Bonjour,
J’essaye de charger le docker sur mon Raspberry pi 4 ArmV7.1 OS Debian Buster .
Le script de chargement get.docker.sh me retourne des erreurs de GPG
Avez-vous quelques idées pour y remedier ?
Grand merci pour vos articles !
Pascal
Bonjour,
une distribution pour raspberry qui fournit tout le nécessaire pour docker :
Hypriot
Depuis que je l’ai essayé, je n’utilise plus que ça…
https://blog.hypriot.com/
Merci pour ce blog !!
Jérôme
merci pour l’info Jérôme
bonne continuation
cdt
françois
Bonjour Jérôme,
Je fais tourner 3 conteneurs sous Hypriot / Rpi 3B+
Or, j’ai bien l’impression qu’Hypriot n’est plus supporté / mis à jour.
Aurais-tu une autre solution à proposer ?
Merci,
Guillaume
Ping : Quelques commandes docker – Philippe's Knowledge Base