30/01/2026

Installation de Docker sur Linux et configuration de base


L'installation de Docker représente votre premier pas vers la pratique et la mise en place de vos premiers conteneurs. Ce chapitre présente les différentes méthodes d'installation de Docker et explique comment installer Docker sur Linux. Nous verrons aussi comment déployer notre premier conteneur et effectuer la configuration de base de Docker (Docker Hub, réseau, volume, etc.).

Notes préalables :

  • Avant d'installer Docker, il est important de considérer que si vous utilisez ufw et firewalld pour gérer les règles de filtrage du trafic réseau, les conteneurs exposés sur Docker contournent ces règles.
  • Les règles de filtrage créées avec nftables ne sont pas supportées par Docker, il est préférable d'utiliser iptables-nft et iptables-legacy.

Méthodes d'installation de Docker sur Linux

Plusieurs possibilités existent quant à la méthode d'installation de Docker Engine - le moteur principal de Docker - à savoir :

  • Utiliser Docker Desktop pour Linux (plus simple)
  • Configurer et installer Docker via le dépôt apt
  • Installer (et mettre à jour) manuellement avec un fichier de package deb
  • Utiliser un script pratique (mis à disposition par Docker)

Dans le cadre de ce cours, nous expliquerons comment installer Docker sur Debian via apt. Nous supposons être root (ou que notre utilisateur possède les droits sudo pour apt).

Installation de Docker sur Linux

Commençons par mettre à jour les paquets et installer les prérequis :

apt update && apt install ca-certificates curl gnupg lsb-release
Installation de Docker sur Debian

Création d'un répertoire pour les clés de sécurité APT :

install -m 0755 -d /etc/apt/keyrings

Nous ajoutons la clé GPG officielle de Docker :

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

Ensuite, nous devons modifier les permissions pour la clé GPG de Docker :

chmod a+r /etc/apt/keyrings/docker.gpg

Puis nous ajoutons le repository Docker aux sources d'APT :

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

Après ajout du repository Docker, nous actualisons les sources :

apt update

Note : si vous utilisez une distribution dérivée de Debian, vous devrez peut-être remplacer la partie de cette commande qui est censée imprimer le nom de code de la version :

(. /etc/os-release && echo "$VERSION_CODENAME")

Il vous faudra remplacer cette partie par le nom de la version Debian correspondante, telle que Bookworm.

Au final, nous terminons par installer Docker et ses composants essentiels :

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Installation de Docker et Docker Compose sur Linux

Nous pouvons tester l'installation de Docker avec un conteneur de démonstration :

docker run hello-world
Premier docker run

Une fois Docker installé sur un système Linux, il est essentiel de configurer correctement l'environnement pour garantir un fonctionnement fluide et sécurisé.

Vérification de l'installation de Docker

Avant de commencer la configuration, assurons-nous que Docker est installé et opérationnel :

docker –version 
docker info
Afficher la version de Docker

Ces commandes confirment que Docker est actif et fournissent des informations sur sa configuration actuelle.

Docker en mode rootless

Par défaut, Docker nécessite des droits root ou l'utilisation de sudo pour exécuter des commandes. En effet, le démon Docker s’exécute avec des privilèges élevés afin de pouvoir gérer les conteneurs, les réseaux et les volumes du système. Pour éviter d’utiliser systématiquement sudo, il est possible d’ajouter un utilisateur au groupe docker, ce qui lui d'utiliser Docker sans élévation de privilèges.

Ajoutons notre utilisateur dédié (jeremy) au groupe docker :

usermod -aG docker jeremy

Une déconnexion et une reconnexion de session sont nécessaires pour que les changements prennent effet.

Testons l'accès sans sudo :

docker run hello-world
Une image contenant texte, capture d’écran, Police

Description générée automatiquement

Création de compte sur Docker Hub

Le formulaire de création de compte est accessible sur : hub.docker.com/signup. Complétez le formulaire en indiquant un e-mail et en choisissant un nom d'utilisateur et un mot de passe. L'alternative consiste à utiliser un compte Google ou GitHub.

Créer un compte Docker Hub

Il est nécessaire de s'authentifier pour avoir accès à la liste des images publiques depuis cette page : hub.docker.com/search?type=image&image_filter=official

Rechercher une image sur le Docker Hub

Nous pouvons aussi nous authentifier auprès du Docker Hub avec la commande docker login, puis entrer notre mot de passe :

Une image contenant texte, capture d’écran, Police

Description générée automatiquement

Configuration du fichier daemon.json

Docker utilise un fichier de configuration JSON pour gérer ses paramètres. Ce fichier est situé dans /etc/docker/daemon.json. Voyons un exemple de configuration courante.

Créons (ou modifions) le fichier suivant :

nano /etc/docker/daemon.json

Ajoutons le contenu suivant pour définir des paramètres de base :

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "data-root": "/var/lib/docker",
  "storage-driver": "overlay2",
  "iptables": true,
  "live-restore": true
}

Explications :

  • log-driver : définit le pilote de journaux utilisé (ici, JSON).
  • log-opts : limite la taille des journaux pour éviter qu'ils ne saturent le disque.
  • data-root : spécifie l'emplacement des fichiers Docker.
  • storage-driver : définit le pilote de stockage utilisé pour les couches des conteneurs.
  • iptables : autorise Docker à gérer automatiquement les règles de pare-feu.
  • live-restore : maintient les conteneurs en cours d'exécution même si le daemon Docker redémarre.
Fichier de configuration daemon.json de Docker

Nous devons redémarrer le service Docker pour appliquer ces modifications :

systemctl restart docker

Configuration réseau avec Docker

Docker propose plusieurs types de réseaux permettant d’adapter l’architecture en fonction des besoins. Le réseau bridge est utilisé par défaut, mais d’autres modes sont disponibles.

Le réseau Bridge

Le mode de réseau Bridge est utilisé par défaut par Docker, si aucun autre mode n'est spécifié lors de la création du réseau. Docker crée un réseau interne isolé sur l’hôte avec un NAT vers l’extérieur.

Créons un réseau bridge personnalisé intitulé tout simplement mon_reseau_personnalise :

docker network create \
  --driver bridge \
  --subnet=192.168.1.0/24 \
  mon_reseau_personnalise

Nous pouvons vérifier le réseau créé :

docker network ls

Le réseau Host

Dans ce mode, le conteneur partage directement le réseau de l’hôte, sans isolation :

  • Pas d’adresse IP Docker distincte
  • Pas de NAT
  • Accès direct aux ports de l’hôte

Par exemple :

docker run --rm --network host nginx

Explications :

  • --rm : supprime automatiquement le conteneur dès qu'il s'arrête,
  • --network host : le conteneur utilise directement le réseau de l’hôte, sans isolation réseau Docker,
  • nginx : image utilisée pour lancer un serveur web

Le réseau none

Ce mode désactive complètement le réseau du conteneur :

  • Pas d’adresse IP
  • Pas de route
  • Pas de communication réseau

Par exemple :

docker run --rm --network none alpine

Le réseau macvlan

Ce mode permet au conteneur d’apparaître comme une machine physique à part entière sur le réseau local, avec sa propre adresse MAC. Très utile quand un service doit être visible directement sur le LAN.

Créons un réseau de ce type nommé mon_macvlan lié à l'interface eth0:

docker network create -d macvlan \
   --subnet=192.168.1.0/24 \
   --gateway=192.168.1.1 \
   -o parent=eth0 \
   mon_macvlan

Le réseau ipvlan

Proche de macvlan, mais sans créer de nouvelle adresse MAC par conteneur. Deux modes existent :

  • ipvlan L2 : similaire à macvlan
  • ipvlan L3 : routage entre sous-réseaux

Comment différencier ces modes à la création ?

Si nous souhaitons créer un réseau ipvlan L2 :

docker network create -d ipvlan \
  --subnet=192.168.1.0/24 \
  -o parent=eth0 \
  --ipvlan-mode=l2 \
  mon_ipvlan_l2

De cette façon, le conteneur est dans le même réseau que l’hôte.

En revanche, si nous souhaitons le mode L3 :

docker network create -d ipvlan \
  --subnet=10.10.0.0/24 \
  -o parent=eth0 \
  --ipvlan-mode=l3 \
  mon_ipvlan_l3

L’isolation est ainsi plus forte.

Réseau overlay

Utilisé dans Docker Swarm pour permettre la communication entre des conteneurs situés sur plusieurs hôtes différents. Pour le créer, nous utilisons :

docker network create -d overlay mon_overlay

D'une manière générale, l'option --network permet de spécifier le nom du réseau sur lequel connecter un conteur.

docker run --rm --network mon_reseau_personnalise alpine ping -c 4 192.168.1.1

Gestion des volumes

Les volumes permettent de persister les données des conteneurs au-delà de leur cycle de vie. Ils sont nécessaires si on souhaite faire persister les données, car, rappelons-le, un conteneur est stateless et supprime les données lorsqu'il est détruit.

Créons un volume :

docker volume create [nom_volume]

Il faut remplacer nom_volume par le nom de volume que nous souhaitons créer. Par exemple :

docker volume create itconnect-volume

Listons les volumes existants :

docker volume ls

Exemple d'utilisation de volume avec un conteneur :

docker run --rm -it -v itconnect:/data alpine sh
Docker - Comment créer un volume

Que signifient les différents paramètres avec docker run ?

  • --rm : supprime automatiquement le conteneur une fois que vous quittez.
  • -it : active le mode interactif (-i) avec un terminal pseudo-TTY (-t), ce qui vous permet de taper des commandes directement.
  • -v itconnect:/data : monte le volume nommé itconnect (que nous avons préalablement créé) sur le chemin /data dans le conteneur.
  • alpine : utilise l'image Alpine comme base.
  • sh : ouvre un shell à l'intérieur du conteneur pour exécuter des commandes.

Pour quitter le conteneur, tapez simplement exit. Le conteneur sera supprimé automatiquement grâce à l'option --rm.

Activer Docker au démarrage de la machine

Il est possible de prévoir que Docker soit exécuté au démarrage du système. Pour ce faire, nous utilisons la commande :

systemctl enable docker

Sécurité de base de Docker

Plusieurs recommandations simples mais importantes sont à retenir quant à la sécurité de base :

  • Bloquer les accès non sécurisés : par défaut, Docker expose une API locale. Nous devons nous assurer qu'il n'est pas accessible à distance sans un pare-feu.
  • Mettre à jour régulièrement : il est important de maintenir Docker et les images à jour pour corriger les failles de sécurité potentielles avec docker pull.
  • Utiliser des images officielles et vérifiées : privilégier l'utilisation d'images provenant de sources de confiance, telles que les images officielles sur le Docker Hub.

Le prochain chapitre s'adresse à ceux qui veulent explorer l'utilisation de Docker sur Windows, ce qui vous donnera aussi l'occasion de découvrir Docker Desktop.

author avatar
Jérémy GAK
Jérémy GAK est un ingénieur Linux doté de plus de 11 ans d'expérience dans le domaine. Sa carrière diversifiée s'étend de l'administration système et réseau à une expertise pointue en sécurité informatique. Consultant et ingénieur système de métier et actif dans la veille technologique, il est expert sur les technologies open source, l'automatisation des processus et la cybersécurité.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.