Docker, c’est quoi ?

Jusqu’à présent, nous avons fait nos installations directement sur le système d’exploitation de notre Raspberry Pi. Il est possible de faire beaucoup de choses de cette manière, mais nous accumulons les couches logicielles, procédons à des paramétrages du système pour répondre aux besoins de certaines applications, oublions pourquoi nous l’avons fait et passons à l’installation d’autres logiciels, au risque de casser ce qui fonctionnait avant.

Imaginez que vous puissiez installer sur votre Raspberry Pi ou votre serveur quel qu’il soit, autant de compartiments que vous avez d’applications, sans vous préoccuper des interactions entre elles. Et que vous puissiez désinstaller des applications aussi simplement qu’on retirerait des livres d’une bibliothèque ou des containers d’un bateau. C’est ce que permet Docker ; les instances d’applications installées avec Docker sont d’ailleurs appelées des containers. Docker est une application à sources ouvertes (open source), comme Samba ou PiVPN/Wireguard que nous avons installées auparavant, qui permet aux développeurs de livrer des « images » prêtes à l’emploi, qu’il suffit de « déployer » en précisant quelques variables. Ce mode de fonctionnement est extrêmement puissant et permet de faire cohabiter un grand nombre d’applications sur un aussi petit serveur que notre Raspberry Pi.

En outre, Docker répond également à des problématiques de sécurité en rendant chaque installation quasiment hermétique aux autres, y compris sur un même serveur.

Docker est, dans son édition communautaire, utilisable gratuitement par des particuliers tels que nous, et des milliers de logiciels sont disponibles sous forme d’images.

Mais alors, si Docker est doté d’aussi grandes qualités, pourquoi ne pas nous en avoir parlé plus tôt ? Eh bien je ne crois pas que passer directement à Docker soit souhaitable pour des personnes qui se lancent dans l’auto-hébergement : l’administration d’un système nécessite de disposer de bases assez solides. Celles que nous avons parcourues ensemble jusqu’à présent constituent un socle. J’espère que vous avez continué de faire joujou avec votre Raspberry Pi, que vous avez installé d’autres applications, reconstruit tout votre système plusieurs fois, appris à utiliser un grand nombre de commandes Linux, que vous vous êtes retrouvé confronté à des problèmes de gestion des droits sur les fichiers, … Bref, que vous avez appris le fonctionnement de votre serveur. Ces compétences seront indispensables pour assurer sa sécurité et sa pérennité.

Vous trouverez sur internet de nombreuses ressources qui vous expliqueront techniquement le mode de fonctionnement de Docker. N’étant pas informaticien, je préfère laisser ce soin à des professionnels. Je peux néanmoins vous orienter vers ce site, qui propose une formation assez poussée.

Je vous proposerai dans les prochains articles l’utilisation de Docker-compose, qui est un moyen simple de déployer des applications Docker par le biais d’un bref document spécifiant l’image Docker à utiliser et l’environnement à mettre en œuvre pour son fonctionnement.

Mais dans un premier temps, voyons comment installer Docker, et revenons à notre ligne de commande :

ssh -p 2345 k-sper.fr@raspberrypi.local
sudo apt update
sudo apt upgrade

Pour installer Docker, il nous faut dans un premier temps installer son répertoire apt, ou en d’autres termes son magasin d’applications.

Pour cela, nous allons commencer par récupérer la signature de ce magasin d’application :

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Puis nous allons indiquer à apt qu’il doit ajouter le répertoire de Docker dans son magasin d’applications :

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Cette ligne correspond à un enchaînement de commandes qui envoie les coordonnées du magasin d’applications de Docker dans la liste des magasins gérés par apt sur notre Raspberry Pi.

sudo apt update

Nous allons chercher avec cette dernière commande la liste des applications à jour, incluant celles de Docker.

Puis nous installons Docker à proprement parler, sous la forme de plusieurs paquets :

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

L’installation peut durer plusieurs minutes.

Pour vérifier le bon fonctionnement de Docker, nous pouvons taper :

sudo docker run hello-world

Si vous obtenez un message similaire, votre installation de Docker est opérationnelle.

Pour aller plus loin, le vous invite à consulter ce site.

La prochaine étape consistera en une sensibilisation à la sécurité.


Si vous avez apprécié cet article, n’hésitez pas à laisser à son auteur un petit commentaire : il l’encouragera à le maintenir et à le développer.


Commentaires

4 réponses à “Docker, c’est quoi ?”

  1. Avatar de Arslan

    The command is not entirely clear:
    « echo « deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
    $(. /etc/os-release && echo « $VERSION_CODENAME ») stable » | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ».

    The site doesn’t have the best formatting of code fields, so I have some simple questions – this command is written on one line, right? When executing it “as is”, the error “-bash: sudo: command not found” appears. Did I not install something, was there an error in the command or was there a command missing in the text that should be run before this one?

    1. The system tells you that you didn’t install sudo command. I suppose you run your system as root, so you don’t have to type the sudo command.
      The command is « kind of » written on one line. The « \ » means the end of the line but the command goes on to the next line.

  2. Avatar de Arslan

    And why don’t you use, as I understand, a simple and ready-made script to install get-docker.sh? Or what you described is it?

    1. I prefer giving the official method for installing Docker. This method is the same that you will find for installing other apps, so it is better to get familiar with it.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *