Comment installer Docker sur un Raspberry Pi
J'ai à la maison un certain nombre de raspberry, ces micro-ordinateurs de la taille d'une carte de crédit. Petits et puissants, il me servent à de multiples utilisations, comme par exemple pour avoir un mediacenter sur un téléviseur trop ancien pour le faire nativement.
J'ai même dernièrement craqué pour le Raspberry Pi 4 sorti le mois dernier (je suis faible face à un nouveau jouet) afin d'en faire un serveur d'application, avec ses 4Go de RAM, il y a de quoi faire.
Après avoir installé une distribution raspbian 10 (buster) "lite" (disponible ici), j'ai décidé d'installer docker dessus afin de faire fonctionner mes applications dans des containers.
Vous trouverez donc ci dessous la manière dont j'ai fait cette installation.
Installation
On commence par installer les prerequis pour docker
#Mise à jour du cache de paquets sudo apt update #Installation des binaires nécessaires sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
Ensuite, on ajoute le repository (à l'heure où j'écris ces lignes, l'ajout via add-apt-repository renvoie une erreur) :
#Ajout de la clé GPG Docker curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - #Ajout du repository sudo echo "deb https://download.docker.com/linux/raspbian/ stretch stable" >> /etc/apt/sources.list
On peut ensuite installer docker, avec une petite nuance. En effet dans les packages recommandés se trouve aufs-dkms, ce package ne parvient pas à se compiler correctement sur le raspberry, on doit donc installer docker sans ses paquets recommandés.
#Mise à jour du cache de paquets sudo apt update #Installation de Docker sans ses paquets recommandés sudo apt -y install docker-ce --no-install-recommends
Un petit test avec un "hello-world" nous permet de voir que notre petit docker se porte bien :
root@raspberrypi:/home/pi# docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world c1eda109e4da: Pull complete Digest: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f 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/
Bonus à l'installation
Pour être sûr que Docker redémarre en même temps que le raspberry, il faut activer le service associé via systemctl
root@raspberrypi:/home/pi# systemctl enable docker.service Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
On peut aussi activer la prise en charge de la limite de RAM par container, l'un des intérêt principaux de la containerisation, pour ce faire, on va modifier le fichier /boot/cmdline.txt et y ajouter les commandes suivantes :
rootwait cgroup_enable=me
ce qui donne, pour ma part :
root@raspberrypi:/home/pi# more /boot/cmdline.txt dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=ac55fd9e-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_enable=me
ensuite, il est nécessaire de rebooter le raspberry pour que les modifications soient prises en compte.
Conclusion
A partir de là, vous avez normalement un serveur docker prêt à être utiliser. Il est aussi possible d'installer docker-compose par exemple.
Personnellement, j'ai tenté d'installer kubernetes (pour le sport), mais je ne suis pas parvenu à debugger la stack réseau qui ne parvenait pas à fonctionner, à cause d'un souci dans le pod coredns. Je réessaierai sans doute plus tard.
Il est a noté que certains problèmes que j'ai rencontrés sont sans doute dû à la jeunesse de la version Debian utilisée (Debian sortie le 6 juillet, Raspbian sortie le 10, je l'ai installé le 12), qui veut dire que nombre de packages ne sont pas officiellement disponibles dessus, mais encore sur stretch, ce qui ne garanti pas leur fonctionnement optimal.
Comments ()