Installation de Docker sous Linux et Windows

Dans ce tutoriel, nous allons voir comment installer Docker sur Debian 11 afin d’utiliser ses premiers containers sous Linux et Windows 10/11 ! Pour Linux, cette installation pas-à-pas repose sur la méthode officielle décrite dans la documentation de Docker. Au-delà des dépendances que nous allons installer et de Docker en lui-même, les ressources de votre machine seront déterminantes pour exécuter plus ou moins de containers Docker.

Présentation

Présentation

Dans ce tutoriel, nous allons voir comment installer Docker sur Debian 11 afin d’utiliser ses premiers containers sous Linux et Windows 10/11 !

Pour Linux, cette installation pas-à-pas repose sur la méthode officielle décrite dans la documentation de Docker. Au-delà des dépendances que nous allons installer et de Docker en lui-même, les ressources de votre machine seront déterminantes pour exécuter plus ou moins de containers Docker.

Pour fonctionner, Docker s’appuie sur différents composants qu’il est important de connaître :

  • Docker Engine ou Docker Daemon correspondant au processus qui fait tourner Docker sur le système, en charge de la génération et l’exécution des containers
  • Docker Registry est un emplacement de stockage pour héberger les images de containers Docker (il peut être public ou privé)
  • Docker Image correspondant à un fichier qui contient la définition d’un container Docker (dépendances, configuration, etc.)
  • Docker Client correspondant à l’utilitaire en ligne de commande qui va permettre de gérer les containers (commande « docker« )
  • Docker Container correspondant aux containers en eux-mêmes, tout en sachant qu’une image peut permettre de créer plusieurs containers avec chacun un identifiant unique

Désinstaller les anciennes versions sous Linux

Désinstaller les anciennes versions sous Linux

Les versions plus anciennes de Docker étaient appelées docker, docker.io ou docker-engine. Désinstallez les versions antérieures avant d’essayer d’installer une nouvelle version :

sudo apt-get remove docker docker-engine docker.io containerd runc

Si apt-get signale qu’aucun de ces packages n’est installé, on peut commencer l’installation de Docker.

Les images, conteneurs, volumes et réseaux stockés dans /var/lib/docker/ ne sont pas automatiquement supprimés lorsque vous désinstallez Docker. Si vous souhaitez commencer par une installation propre et que vous préférez nettoyer les données existantes, suivez le paragraphe suivant pour désinstaller Docker Engine.

Suppression des données restantes

  • Désinstallez les packages Docker Engine, CLI, container et Docker Compose :
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras
  • Les images, les conteneurs, les volumes ou les fichiers de configuration personnalisés de votre hôte ne sont pas automatiquement supprimés. Pour supprimer toutes les images, tous les conteneurs et volumes :
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Vous devez supprimer manuellement tous les fichiers de configuration modifiés.

Étapes de post-installation de Docker Engine

Étapes de post-installation de Docker Engine

Ces procédures de post-installation facultatives vous montrent comment configurer votre machine hôte Linux pour mieux fonctionner avec Docker.

Gestion de Docker en tant qu’utilisateur non root

Le démon Docker est lié à un socket Unix et non à un port TCP. Par défaut, c’est l’utilisateur root qui possède le socket Unix, et les autres utilisateurs ne peuvent y accéder qu’en utilisant sudo. Le démon Docker s’exécute toujours en tant qu’utilisateur root.

Si vous ne souhaitez pas faire précéder la commande docker de sudo, créez un groupe Unix appelé docker et ajoutez-y des utilisateurs. Lorsque le démon Docker démarre, il crée un socket Unix accessible aux membres du groupe Docker. Sur certaines distributions Linux, le système crée automatiquement ce groupe lors de l’installation de Docker Engine à l’aide d’un gestionnaire de package. Dans ce cas, vous n’avez pas besoin de créer manuellement le groupe.

Attention :

Le groupe docker accorde des privilèges de niveau racine à l’utilisateur.

Note :

Pour exécuter Docker sans privilèges root, voir Exécuter le démon Docker en tant qu’utilisateur non root (mode Rootless).

Pour créer le groupe de dockers et ajouter votre utilisateur :

  1. Créez le groupe de dockers.
sudo groupadd docker
  1. Ajouter votre utilisateur au groupe Docker
sudo usermod -aG docker $USER
  1. Déconnectez-vous et reconnectez-vous afin que votre appartenance à un groupe soit pris en compte.

Remarque : Si vous exécutez Linux sur une machine virtuelle, il peut être nécessaire de redémarrer la machine virtuelle pour que les modifications soient prises en compte.

Vous pouvez également exécuter la commande suivante pour activer les modifications apportées aux groupes :

newgrp docker
  1. Vérifiez que vous pouvez exécuter les commandes docker sans sudo.
docker run hello-world

Cette commande télécharge une image test et l’exécute dans un conteneur. Lorsque le conteneur s’exécute, il imprime un message et se ferme.

Si vous avez d’abord exécuté les commandes CLI Docker à l’aide de sudo avant d’ajouter votre utilisateur au groupe Docker, vous pouvez voir l’erreur suivante :

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

Cette erreur indique que les paramètres d’autorisation pour le répertoire ~/.docker/ sont incorrects, car la commande sudo a été utilisée plus tôt.

Pour résoudre ce problème, supprimez le répertoire ~/.docker/ (il est recréé automatiquement, mais tous les paramètres personnalisés sont perdus) ou modifiez sa propriété et ses autorisations à l’aide des commandes suivantes :

 sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
 sudo chmod g+rwx "$HOME/.docker" -R

Installation de Docker sur Linux Debian 11

Installation de Docker sur Linux Debian 11

A. Installer les dépendances de Docker

Premièrement, nous devons installer les dépendances nécessaires au bon fonctionnement de Docker. Commençons par mettre à jour le cache des paquets :

sudo apt-get update

Puis, exécutez la commande ci-dessous pour installer les paquets :

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

B. Ajouter le dépôt officiel Docker

Deuxièmement, nous devons ajouter le dépôt officiel de Docker à notre machine Debian afin de pouvoir récupérer les sources. Commençons par récupérer la clé GPG qui nous permettra de valider les paquets récupérés depuis le dépôt Docker :

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Ensuite, on ajoute le dépôt Docker à la liste des sources de notre machine :

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

Pour finir, nous devons mettre à jour le cache des paquets pour prendre en compte les paquets de ce nouveau dépôt :

sudo apt-get update

C. Installation du Docker Engine

Troisièmement, c’est l’installation de Docker qui doit être réalisée. Trois paquets sont à installer sur notre hôte pour bénéficier de la dernière version de l’ensemble des composants. Voici la commande à exécuter :

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

Précision :

Si l’on veut choisir quelle version du Docker Engine installer, on commence par lister les versions disponibles :

# List the available versions:
apt-cache madison docker-ce | awk '{ print $3 }'

5:18.09.1~3-0~debian-stretch
5:18.09.0~3-0~debian-stretch
18.06.1~ce~3-0~debian
18.06.0~ce~3-0~debian

Puis on installe la version de son choix :

VERSION_STRING=5:18.09.0~3-0~debian-stretch
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-compose-plugin

Si vous souhaitez que Docker démarre automatiquement avec votre machine Debian, la commande suivante doit être exécutée :

sudo systemctl enable docker

C. Vérification du bon foctionnement de l’installation

L’installation des paquets est terminée, mais Docker est-il correctement installé ? Pour répondre à cette question, vous pouvez regarder le statut de Docker, ce qui sera une première indication si le service est identifié sur la machine.

sudo systemctl status docker

Ensuite, le meilleur moyen de vérifier si Docker est installé, c’est d’exécuter le container nommé « hello-world ». La commande ci-dessous permettra de télécharger l’image de ce container et de l’exécuter.

docker run hello-world

Lorsque ce container sera exécuté, le message « Hello from Docker! » sera retourné dans la console. C’est le signe que les différents composants sont opérationnels et que Docker a pu générer et exécuter le container.

Informations sur la version de Docker installée :

Pour finir avec la phase d’installation, sachez qu’à tout moment vous pouvez voir quelle est la version de Docker que vous utilisez grâce à la commande suivante :

docker --version
Docker version 20.10.16, build aa7e414