Docker sur Debian : Mise en place d’une infrastructure conteneurisée fiable

Par Xavier Deloffre

Créer, tester, déployer et maintenir des applications dans un environnement standardisé, reproductible et isolé est devenu une pratique essentielle dans le développement et l’exploitation modernes. Docker, la plateforme de conteneurisation la plus largement adoptée, répond à ces besoins avec efficacité. Combiné à Debian, l’une des distributions GNU/Linux les plus stables et pérennes, il forme une base robuste pour les infrastructures techniques. Ce guide détaille les étapes d’installation de Docker sur Debian, la mise en place d’une stack de conteneurs, ainsi que les avantages spécifiques de cette combinaison pour des déploiements fiables et maîtrisés.

Installer Docker sur Debian : Les étapes à suivre

Docker n’est pas inclus dans les dépôts officiels de Debian dans sa version la plus récente, ce qui nécessite une procédure d’installation spécifique pour bénéficier d’une version stable, maintenue par l’équipe Docker. L’objectif de cette section est d’installer Docker Engine et ses composants associés (Compose, Buildx, Containerd) sur une instance Debian 12 « Bookworm », en respectant les bonnes pratiques en matière de sécurité, de gestion des dépôts, et de configuration système. Cette procédure est également valable pour Debian 11 « Bullseye », avec des ajustements mineurs.

1. Mise à jour du système

Avant toute opération, il est essentiel de s’assurer que le système est à jour. Cela garantit la compatibilité avec les bibliothèques nécessaires à Docker, ainsi qu’un niveau de sécurité de base suffisant.

sudo apt update && sudo apt upgrade -y

Si vous utilisez ce serveur en production, un redémarrage peut être nécessaire après la mise à jour du noyau ou de certains services critiques.

2. Installation des dépendances

Docker repose sur plusieurs outils pour la récupération sécurisée de paquets via HTTPS, la gestion des clés GPG, et la détection de la version du système. Ces paquets permettent aussi de configurer proprement les dépôts tiers.

sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y

Le paquet lsb-release est particulièrement utile pour détecter dynamiquement le nom de code de la version Debian installée (par exemple : bookworm), ce qui simplifie l’ajout des dépôts dans les scripts automatisés.

3. Ajout de la clé GPG officielle de Docker

Docker signe ses paquets avec une clé GPG. Debian vérifie cette signature pour garantir que les paquets installés proviennent d’une source fiable. On stocke cette clé dans un répertoire spécifique recommandé par les bonnes pratiques de sécurité Debian : /etc/apt/keyrings.

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

L’option --dearmor transforme la clé en format binaire lisible par APT. Cela évite d’utiliser les anciens répertoires /etc/apt/trusted.gpg, désormais déconseillés.

4. Ajout du dépôt Docker à APT

Une fois la clé installée, on configure le dépôt Docker stable pour Debian. On lie le dépôt à l’architecture de la machine et à la clé GPG précédemment installée.

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

Ce dépôt contient les paquets Docker maintenus par l’équipe officielle, testés pour chaque version de Debian, avec un suivi régulier des mises à jour de sécurité et de stabilité.

5. Installation de Docker Engine et de ses outils

Une fois le dépôt ajouté, on recharge les index APT et on installe les paquets nécessaires :

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
  • docker-ce : le moteur Docker Community Edition
  • docker-ce-cli : l’interface en ligne de commande
  • containerd.io : moteur d’exécution léger et indépendant utilisé par Docker
  • docker-buildx-plugin : extension pour la compilation multi-architecture
  • docker-compose-plugin : remplacement moderne de l’outil docker-compose classique

Note : Le paquet docker-compose-plugin permet désormais l’usage de docker compose (avec un espace), intégré à la CLI Docker, contrairement à l’ancien binaire docker-compose (avec un tiret) basé sur Python, désormais obsolète.

6. Activation du service Docker

Après installation, le service Docker doit être démarré et activé au démarrage du système :

sudo systemctl enable docker
sudo systemctl start docker

Vous pouvez vérifier que le service fonctionne correctement avec :

sudo systemctl status docker

7. Ajouter votre utilisateur au groupe docker (optionnel mais recommandé)

Par défaut, la commande docker nécessite les droits administrateur (sudo). Pour autoriser un utilisateur non-root à exécuter Docker sans élévation de privilèges, il suffit de l’ajouter au groupe docker :

sudo usermod -aG docker $USER

Attention, cette opération nécessite une reconnexion (ou un redémarrage de session) pour prendre effet. Elle doit être utilisée en connaissance de cause, car elle accorde un accès complet au démon Docker, et donc indirectement à l’hôte.

8. Vérification de l’installation

Pour valider que Docker est bien installé et fonctionnel, exécutez le conteneur de test officiel :

docker run hello-world

Si tout est correctement configuré, un message de bienvenue s’affichera, confirmant que le démon Docker accepte les requêtes et peut lancer des conteneurs.

Étape supplémentaire (optionnelle) : nettoyage de l’environnement

Après des tests, il est souvent utile de faire un nettoyage des images ou conteneurs inutilisés. Voici quelques commandes utiles :

  • docker system prune : supprime tous les conteneurs, images et volumes non utilisés
  • docker image ls : liste les images locales
  • docker container ls -a : liste tous les conteneurs, y compris ceux arrêtés

Quelques remarques de sécurité

Pour une utilisation en production, pensez à :

  • Mettre à jour régulièrement Docker via apt upgrade ou une CI dédiée
  • Désactiver l’accès au démon Docker en TCP (sauf nécessité explicite avec TLS)
  • Configurer des politiques de sécurité (AppArmor, SELinux, rootless mode)
  • Utiliser des images officielles et vérifiées dans vos conteneurs

Docker est désormais prêt à l’emploi sur votre serveur Debian. Vous pouvez l’utiliser pour déployer des applications, configurer des environnements d’intégration continue, ou créer des stacks multi-services via Docker Compose.

étapes installation docker sur debian

Créer une stack de conteneurs Docker sur Debian

L’un des atouts majeurs de Docker est sa capacité à exécuter plusieurs services interdépendants dans des conteneurs isolés tout en les orchestrant comme un tout cohérent. Cela permet de modéliser facilement des architectures complexes, de les déployer rapidement et de les rendre reproductibles dans tout type d’environnement, du poste local au cluster de production. Sur Debian, cette approche s’intègre parfaitement, que ce soit pour héberger un site web, déployer un back-end applicatif ou construire une infrastructure DevOps. Nous allons ici créer une stack web typique, incluant un serveur Nginx, un moteur PHP-FPM et une base de données MariaDB, à l’aide de Docker Compose.

1. Structure du projet

La première étape consiste à organiser les fichiers du projet. Une structure claire facilite la maintenance, la mise à jour, ainsi que l’intégration dans des outils de versionnement ou de déploiement automatisé (CI/CD).

mon-projet/
├── docker-compose.yml        # Définition de la stack et des services
├── .env                      # Variables d’environnement sensibles
└── html/                     # Fichiers web du site (PHP/HTML)
    └── index.html            # Fichier de test

Le répertoire html/ contient les sources du site (HTML, CSS, PHP). Les fichiers docker-compose.yml et .env définissent et configurent les conteneurs utilisés dans la stack.

2. Exemple de fichier docker-compose.yml

Voici un fichier docker-compose.yml complet, compatible avec la version 3.8 de Docker Compose. Il décrit trois services principaux :

  • web : serveur web Nginx servant les fichiers statiques
  • php : moteur PHP-FPM pour exécuter le code PHP
  • db : base de données MariaDB avec persistance des données
version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - php

  php:
    image: php:8.2-fpm
    volumes:
      - ./html:/var/www/html

  db:
    image: mariadb:10.11
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Quelques remarques techniques :

  • Le volume partagé entre les services web et php permet à Nginx de servir les fichiers, et à PHP-FPM de les interpréter.
  • Le fichier default.conf pour Nginx est optionnel mais recommandé pour rediriger les requêtes PHP vers le service php.
  • Le service db utilise un volume nommé db_data pour persister les données de la base au-delà du cycle de vie du conteneur.

3. Exemple de fichier .env

Les variables d’environnement sont extraites dans un fichier .env pour éviter de les exposer dans le code source. Ce fichier est souvent exclu du versionnement (.gitignore).

MYSQL_ROOT_PASSWORD=supermotdepasse
MYSQL_DATABASE=siteweb
MYSQL_USER=admin
MYSQL_PASSWORD=motdepasse

Vous pouvez y ajouter d’autres variables pour configurer votre application ou définir des chemins dynamiques, par exemple APP_ENV, DEBUG, ou APP_URL.

4. Lancer la stack

Une fois les fichiers prêts, vous pouvez initialiser la stack avec la commande suivante :

docker compose up -d

Cette commande crée les réseaux Docker, initialise les volumes, télécharge les images manquantes et démarre les services en tâche de fond. Le flag -d exécute les conteneurs en mode détaché.

Pour vérifier que les services sont bien actifs :

docker ps

Vous pouvez ensuite accéder à votre application via http://localhost (en local) ou via l’adresse IP de votre serveur. En cas de déploiement distant, veillez à ouvrir le port 80 dans le pare-feu (ufw, iptables ou règle cloud).

5. Maintenance et mise à jour

Une fois votre stack en production ou en développement, il est essentiel de pouvoir la gérer efficacement. Docker Compose propose plusieurs commandes utiles :

  • Mettre à jour les images : docker compose pull
    Télécharge les dernières versions des images référencées sans relancer les services.
  • Recréer la stack avec les nouvelles images : docker compose up -d --build
    Recompile les services si un Dockerfile est présent ou si des changements sont détectés.
  • Redémarrer les services : docker compose restart
    Redémarre tous les services ou uniquement ceux spécifiés.
  • Inspecter les logs : docker compose logs -f
    Suivre les logs en temps réel pour le débogage ou le monitoring.
  • Arrêter et supprimer la stack proprement : docker compose down
    Supprime les conteneurs, réseaux et volumes associés (sans supprimer les données persistées dans les volumes nommés).

6. Étapes complémentaires pour la production

Pour une stack destinée à être utilisée en production, plusieurs optimisations et précautions sont recommandées :

  • Configurer un reverse proxy (ex : Traefik ou Nginx) avec support SSL via Let’s Encrypt pour sécuriser les connexions.
  • Utiliser des réseaux personnalisés pour séparer les services exposés et les services internes.
  • Définir des politiques de redémarrage (ex : restart: always) pour garantir la disponibilité.
  • Activer le monitoring avec des outils comme Prometheus, Grafana ou Netdata via conteneur.
  • Externaliser les données sensibles (mots de passe, clés API) via Docker Secrets ou un gestionnaire de configuration externe.

La mise en place d’une stack Docker sur Debian permet ainsi de simuler une architecture complète de type LEMP (Linux, Nginx, MariaDB, PHP) de manière isolée, légère et reproductible. Cette approche convient aussi bien au prototypage qu’au déploiement d’environnements de staging, voire de production, avec peu d’efforts.

creer stack de conteneur docker sur debian

Les avantages de Docker sur Debian pour une infrastructure fiable

Associer Docker et Debian offre une combinaison solide, largement utilisée dans les infrastructures professionnelles et les projets open source. Voici pourquoi ce choix est si populaire.

1. Un socle stable et prévisible

Debian est réputée pour sa stabilité, ses mises à jour maîtrisées et sa documentation exhaustive. Elle constitue une base idéale pour héberger Docker, sans interférence avec les processus de fond du système.

2. Une faible consommation de ressources

En installant Debian sans interface graphique, vous obtenez un environnement léger. Cela permet de maximiser les performances des conteneurs, surtout sur des VPS ou des serveurs cloud à ressources limitées.

3. Des images Docker officielles basées sur Debian

De nombreuses images Docker officielles sont basées sur Debian Slim. Cela permet une cohérence totale entre l’hôte et les conteneurs, simplifiant le debug, les dépendances et les mises à jour.

4. Une sécurité renforcée

Docker sur Debian profite à la fois des mécanismes de sécurité de Docker (isolation, contrôle des ressources) et de la robustesse du système Debian. Les mises à jour de sécurité peuvent être automatisées, et les bonnes pratiques comme le renforcement du noyau ou l’usage d’AppArmor sont facilement intégrables.

5. Une compatibilité avec les outils d’orchestration

Debian est parfaitement compatible avec des outils comme Docker Swarm, Portainer, Traefik, ou Kubernetes (via kubeadm ou k3s). Elle permet ainsi d’évoluer facilement vers une infrastructure plus avancée ou distribuée.

6. Une communauté riche et une documentation abondante

Que ce soit pour Docker ou Debian, les forums, les documentations officielles et les contributions communautaires sont nombreux. Vous trouverez facilement des tutoriels, des scripts, ou des conseils pour tous les cas d’usage.

Xavier Deloffre

Xavier Deloffre

Fondateur de Facem Web, agence implantée à Arras et à Lille (Hauts-de-France), je suis spécialiste du Web Marketing, formateur expérimenté, et blogueur reconnu dans le domaine du Growth Hacking. Passionné par le référencement naturel (SEO) que j'ai découvert en 2009, j'imagine et développe des outils web innovants afin d'optimiser la visibilité de mes clients dans les SERPs. Mon objectif principal : renforcer leur notoriété en ligne par des stratégies digitales efficaces et créatives.

0 commentaires

Soumettre un commentaire

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

Besoin de visibilité ?

☑️ Experts du référencement

☑️ + de 12 ans d’éxpérience

☑️ + 500 clients satisfaits

☑️ Création de sites

☑️ Audit SEO

☑️ Conseil SEO

☑️ Référencement de sites

☑️ Devis gratuit