Docker est devenu incontournable dans le monde de l’hébergement et du développement web. Si vous avez un VPS et que vous voulez héberger plusieurs applications sans vous battre avec des conflits de versions ou des configurations complexes, Docker est probablement la solution qu’il vous faut.
Voici une introduction pratique, sans prérequis avancés.
Pourquoi Docker pour l’hébergement ?
Le problème que Docker résout. Imaginons que vous voulez héberger WordPress (qui nécessite PHP 8.1), une application Node.js et une API Python Flask sur le même VPS. Ces applications ont des dépendances différentes, parfois incompatibles. Sans Docker, vous jonglerez avec des configurations complexes, des conflits entre versions, des problèmes de chemins.
Avec Docker, chaque application vit dans son propre conteneur — un environnement isolé qui embarque tout ce dont elle a besoin. Les conteneurs coexistent sans interférer.
Les autres avantages :
- Reproductibilité : “ça marche sur mon ordi” est une blague du passé. Si ça fonctionne dans un conteneur, ça fonctionne partout
- Isolation : un bug dans un conteneur n’affecte pas les autres
- Facilité de déploiement : une image Docker, c’est une application packagée qui se déploie en une commande
- Rollback facile : revenir à une version précédente d’une application se fait en changeant le tag de l’image
Concepts de base
Une image Docker est un modèle en lecture seule qui contient tout ce qu’il faut pour faire tourner une application : système d’exploitation de base, dépendances, code applicatif, configuration.
Un conteneur est une instance d’une image en cours d’exécution. Vous pouvez lancer plusieurs conteneurs à partir de la même image.
Docker Hub est un registre public d’images. Il contient des images officielles pour pratiquement tout : WordPress, MySQL, Nginx, Redis, Node.js, Python, etc.
Docker Compose est un outil qui permet de définir et gérer des applications multi-conteneurs. Une application web complète (application + base de données + cache) peut être définie dans un fichier YAML et lancée en une commande.
Installer Docker sur un VPS Ubuntu
# Mise à jour du système
sudo apt update && sudo apt upgrade -y
# Installation des prérequis
sudo apt install -y ca-certificates curl gnupg
# Ajout de la clé GPG Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Ajout du dépôt Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installation de Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Vérification
docker --version
docker compose version
Pour utiliser Docker sans sudo :
sudo usermod -aG docker $USER
newgrp docker
Votre premier conteneur
# Tester avec Hello World
docker run hello-world
# Lancer un serveur Nginx
docker run -d -p 80:80 nginx
# Vérifier les conteneurs en cours
docker ps
# Arrêter un conteneur
docker stop <id_ou_nom>
Le flag -d lance le conteneur en arrière-plan (détaché). Le flag -p 80:80 mappe le port 80 du conteneur vers le port 80 du VPS.
Déployer WordPress avec Docker Compose
Créez un dossier pour votre projet et un fichier docker-compose.yml :
version: '3.8'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: motdepasse_secure
MYSQL_ROOT_PASSWORD: root_motdepasse
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: motdepasse_secure
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
volumes:
db_data:
wordpress_data:
Lancez avec :
docker compose up -d
WordPress est maintenant accessible sur le port 8080 de votre VPS. Deux conteneurs ont été créés (MySQL + WordPress), interconnectés automatiquement.
Ajouter un reverse proxy avec Nginx
En production, vous ne voulez pas exposer vos applications directement sur des ports comme 8080. Un reverse proxy Nginx (ou Traefik) gère les connexions HTTPS et redirige vers les bons conteneurs.
Avec Nginx Proxy Manager (solution simple pour débutants) :
services:
app:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Nginx Proxy Manager propose une interface graphique pour configurer vos proxys et vos certificats SSL Let’s Encrypt en quelques clics.
Gestion des volumes et des sauvegardes
Les données importantes (base de données, fichiers uploadés) doivent être dans des volumes Docker — pas dans le conteneur lui-même. Si le conteneur est supprimé, les volumes persistent.
Pour sauvegarder un volume :
docker run --rm -v nom_du_volume:/data -v $(pwd):/backup ubuntu tar czf /backup/backup.tar.gz /data
Les ressources indispensables pour aller plus loin
Documentation officielle Docker : docs.docker.com — complète et bien maintenue.
Docker Hub : hub.docker.com — recherchez les images officielles pour toutes vos applications.
Portainer : un panneau de contrôle graphique pour gérer vos conteneurs Docker via un navigateur. Très utile si vous préférez éviter la ligne de commande pour la gestion quotidienne.
Docker a une courbe d’apprentissage, mais une fois les bases maîtrisées, il simplifie considérablement l’hébergement et le déploiement. C’est devenu un outil standard que tout développeur et administrateur système devrait connaître.

