Introduction
L’objectif est d’installer Docker Engine (le moteur de conteneurisation) et Portainer (une interface web de gestion) sur un serveur Linux.
Contrairement à la virtualisation classique qui simule une machine complète (OS inclus), Docker permet d’isoler les applications dans des « conteneurs » légers qui partagent le noyau du système hôte.
Contexte et Justification
Actuellement, pour installer GLPI ou Zabbix, nous avons dû installer manuellement PHP, Apache et les bibliothèques, ce qui crée des conflits de versions (ex : GLPI veut PHP 8.2, mais une autre app veut PHP 7.4). Docker résout ce problème :
- Isolation : Chaque application contient ses propres bibliothèques.
- Portabilité : « Si ça marche sur ma machine, ça marche sur le serveur ».
- Portainer : Offre une interface graphique pour gérer les conteneurs sans tout faire en ligne de commande.
Concepts Clés
- Image : Le « modèle » ou le CD d’installation (ex : l’image officielle MySQL). Elle est en lecture seule.
- Conteneur : Une instance vivante de l’image (l’application qui tourne).
- Volume : Espace de stockage persistant. Si on supprime le conteneur, les données (base de données) restent dans le volume.
- Docker Compose : Outil permettant de définir et lancer plusieurs conteneurs liés (ex : GLPI + MariaDB) via un seul fichier texte.
Prérequis
- Un serveur Linux (Ubuntu 24.04 recommandé, comme pour Zabbix).
- Un accès
rootousudo. - Une connexion Internet active (pour télécharger les images depuis le Docker Hub).
- Les anciens paquets Docker conflictuels (si présents) doivent être supprimés.
Installation de Docker Engine
Nettoyage des Anciennes Versions
Justification : Les dépôts Ubuntu fournissent parfois des versions nommées docker.io ou docker-compose qui sont obsolètes et incompatibles avec les standards actuels.
- Lancez la commande de nettoyage :
sudo apt-get remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc

Figure 1 · Suppression des paquets obsolètes
Configuration du Dépôt Officiel Docker
Justification : Comme pour Zabbix, nous utilisons le dépôt officiel de l’éditeur pour garantir la sécurité et l’accès aux dernières fonctionnalités.
- Mettez à jour l’index et installez les outils nécessaires :
sudo apt-get update
sudo apt-get install ca-certificates curl
- Créez le dossier pour les clés de sécurité :
sudo install -m 0755 -d /etc/apt/keyrings - Téléchargez la clé GPG officielle de Docker :
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
- Ajoutez le dépôt à vos sources :
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Mettez à jour la liste des paquets une nouvelle fois :
sudo apt-get update

Figure 2 · Ajout du dépôt officiel Docker
Installation du Moteur
- Installez les paquets Docker (Engine, CLI, Containerd et le plugin Compose) :
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Figure 3 · Installation de Docker Engine
Configuration des Droits Utilisateur
Justification : Par défaut, seul root peut lancer des conteneurs. Pour éviter de taper sudo devant chaque commande, nous ajoutons l’utilisateur courant au groupe docker.
- Ajoutez votre utilisateur au groupe :
sudo usermod -aG docker $USER. - Important : Pour que cela prenne effet, déconnectez-vous de la session (
exit) et reconnectez-vous, ou tapeznewgrp docker.
Installation de Portainer (Interface Web)
Justification : Portainer permet de voir l’état des conteneurs, les logs et les réseaux via une page web, ce qui simplifie grandement l’administration au quotidien.
- Créez un volume pour stocker les données de configuration de Portainer :
docker volume create portainer_data. - Lancez le conteneur Portainer Server (version Community) :
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest

Figure 4 · Démarrage du conteneur Portainer
Explication de la commande :
-d: Détaché (tourne en arrière-plan).-p 9443:9443: Ouvre le port web HTTPS.--restart=always: Redémarre automatiquement si le serveur redémarre.-v /var/run/docker.sock...: Donne à Portainer le droit de piloter le Docker du serveur.
Vérifications et Premier Lancement
Test en Ligne de Commande
- Lancez l’image de test universelle :
docker run hello-world. - Si le message « Hello from Docker! » s’affiche, l’installation est réussie.

Figure 5 · Message Hello from Docker
Accès à Portainer
- Ouvrez votre navigateur sur le poste client.
- Accédez à l’URL :
https://IP_DU_SERVEUR:9443. - Acceptez le risque de sécurité (certificat auto-signé).
- Créez le compte administrateur (utilisateur : admin, mot de passe : 12 caractères minimum).
- Cliquez sur Get Started et sélectionnez votre environnement local.

Figure 6 · Tableau de bord Portainer
Dépannage
Erreur « permission denied while trying to connect to the Docker daemon socket » :
- Vous avez oublié l’étape « Configuration des Droits Utilisateur » ou ne vous êtes pas reconnecté. Vérifiez l’appartenance au groupe avec
groups, puis rouvrez une session ou lanceznewgrp docker. N’ouvrez pas les droits du socket (chmod 666) : cela donne un accès root à tous les utilisateurs.
Portainer inaccessible :
- Vérifiez si le pare-feu (UFW) est actif. Si oui, autorisez le port :
sudo ufw allow 9443/tcp.
Conflit de ports :
- Si vous aviez déjà un service sur le port 9443, changez le mapping dans la commande
docker run(ex :-p 9444:9443).
Conseils et Bonnes Pratiques
Figer les versions : n’utilisez jamais le tag :latest en production pour vos applications métiers (GLPI, Zabbix). Préférez figer une version (ex : glpi:11.0.5) pour éviter qu’une mise à jour automatique ne casse tout lors d’un redémarrage.
Sauvegardes : avec Docker, il suffit de sauvegarder le dossier des volumes (/var/lib/docker/volumes, ou vos dossiers montés comme /srv/docker) pour sauvegarder toutes vos données.
Nettoyage : les images prennent de la place. Lancez régulièrement docker system prune pour supprimer ce qui est inutilisé.
Procédures Liées
- Déploiement de GLPI (Conteneurisé) (Exemple de service conteneurisé)
- Déploiement de Zabbix (Conteneurisé) (Supervision conteneurisée)
- Déploiement Serveur DNS Local Bind9 (Conteneurisé) (DNS conteneurisé)
- Installation d’un Serveur Ubuntu en Ligne de Commande (CLI) (Système hôte)
- Configuration du Pare-feu avec UFW et nftables (Interaction entre Docker et le pare-feu)
