Le plus rapide : créer le serveur avec l'image Docker
Pour un nouveau serveur, le plus rapide est de choisir Docker dans la liste des images. Le serveur démarre avec Docker Engine et Docker Compose installés sur Ubuntu 24.04 LTS, et vous lancez docker compose up dès la connexion. La présentation de l'application et les tailles recommandées sont sur la page VPS Docker.
Pour ajouter Docker à un serveur déjà en service, ou utiliser un autre système comme Debian ou AlmaLinux, installez-le vous-même en suivant les étapes ci-dessous. Toutes les commandes partent du principe que vous êtes connecté en root. Si vous êtes connecté en utilisateur standard, ajoutez sudo devant les commandes.
À vérifier avant l'installation
Docker fonctionne sur des serveurs de toute taille. Pour les projets personnels exécutant quelques conteneurs, le plus petit plan général de 12GB est largement suffisant ; pour exécuter une base de données, un serveur web et un cache ensemble, 24GB ou plus vous offrent de la marge. Si vous téléchargez et construisez souvent des images, un VPS NVMe avec un disque rapide fait une différence notable.
Si d'anciens paquets Docker issus des dépôts du système sont présents, supprimez-les d'abord pour qu'ils ne se mélangent pas aux paquets officiels. Les paquets non installés sont ignorés : vous pouvez lancer la commande telle quelle.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; doneInstaller Docker sur Ubuntu 24.04
Étape 1. Ajouter la clé et l'adresse du dépôt
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
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" > /etc/apt/sources.list.d/docker.listÉtape 2. Installer Docker Engine et Compose
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginUne fois l'installation terminée, le service Docker démarre automatiquement, et il redémarre aussi avec le serveur. Les mêmes commandes fonctionnent telles quelles sur Ubuntu 22.04 et 26.04. Le nom de version utilisé dans l'adresse du dépôt est lu automatiquement dans /etc/os-release.
Installer Docker sur Debian 13
Sur Debian, les étapes sont les mêmes qu'avec Ubuntu ; seule l'adresse du dépôt devient linux/debian. Les mêmes commandes s'utilisent aussi sur Debian 12.
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginInstaller Docker sur AlmaLinux 10
AlmaLinux et Rocky Linux utilisent le dépôt RHEL de Docker. Pour éviter les conflits avec Podman, installé par défaut, faites d'abord le ménage puis installez. Les commandes sont les mêmes sur AlmaLinux 9 et Rocky Linux 9 et 10.
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now dockerLors de la première installation, si l'on vous demande d'accepter la clé de signature du dépôt, tapez y. Sur la famille RHEL, le service ne démarre pas automatiquement après l'installation : la dernière ligne, systemctl enable --now docker, le lance tout de suite et l'active au démarrage.
Vérifier l'installation et lancer un premier conteneur
Lancez une fois un conteneur de test avec la commande ci-dessous. Si un message commençant par Hello from Docker s'affiche, le moteur, le téléchargement d'images et l'exécution de conteneurs fonctionnent. Avec --rm, le conteneur est supprimé dès la fin de l'exécution.
docker run --rm hello-world
docker compose versionPour utiliser Docker avec un utilisateur standard, ajoutez-le au groupe docker et reconnectez-vous. Le groupe docker a les mêmes droits que root : n'y ajoutez que des utilisateurs de confiance.
usermod -aG docker nom-utilisateurDéployer des services avec Docker Compose
Compose permet de décrire la configuration des conteneurs dans un seul fichier YAML et de tout lancer en une ligne. Même en migrant ou en recréant le serveur, ce même fichier suffit pour retrouver le même environnement. Par exemple, un fichier qui lance un serveur web Nginx ressemble à ceci.
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
web:
image: nginx:stable
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
EOF
docker compose up -dOuvrez http://YOUR_SERVER_IP dans le navigateur : la page Nginx s'affiche. Placez un index.html dans le dossier html pour qu'il soit servi. Les quatre commandes ci-dessous suffisent au quotidien.
docker compose ps: affiche les conteneurs en cours d'exécution et leurs ports.docker compose logs -f: suit les journaux en temps réel. Quittez avec Ctrl+C.docker compose pull && docker compose up -d: récupère les nouvelles images et passe les conteneurs à la nouvelle version.docker compose down: arrête et supprime les conteneurs. Les données stockées dans les volumes sont conservées.
Avec restart: unless-stopped, les conteneurs redémarrent automatiquement quand le serveur redémarre. Seuls les conteneurs que vous avez arrêtés vous-même restent arrêtés.
Pare-feu et exposition des ports
Docker ouvre les ports exposés avec ports: en ajoutant directement des règles de pare-feu (iptables). Un port non autorisé dans ufw reste donc accessible de l'extérieur s'il figure dans ports:. Pour une base de données ou une interface d'administration qui n'a pas à être visible de l'extérieur, liez-la uniquement à 127.0.0.1 comme ci-dessous : elle ne sera accessible que depuis le serveur.
ports:
- "127.0.0.1:5432:5432"Pour un service web, n'exposez que les ports 80 et 443, et laissez les autres services s'appeler entre eux par leur nom au sein du même réseau Compose. Pour le pare-feu de base du serveur, suivez le guide du pare-feu de base et n'ouvrez que SSH, HTTP et HTTPS.
Gestion des journaux et du disque
Sans réglage particulier, les journaux des conteneurs s'accumulent sans fin. En indiquant le pilote de journalisation local dans /etc/docker/daemon.json comme ci-dessous, les journaux sont compressés et seule une taille définie est conservée. Après enregistrement, lancez systemctl restart docker : le réglage s'applique aux nouveaux conteneurs.
{
"log-driver": "local"
}Les images inutilisées et les conteneurs arrêtés occupent aussi de l'espace disque. Consultez l'utilisation avec docker system df et supprimez les images inutilisées avec docker image prune -a. Quand les données augmentent, vous pouvez aussi ajouter au serveur un disque bloc NVMe et l'utiliser comme dossier de données de Docker.
Protéger les données et étapes suivantes
Les conteneurs peuvent être supprimés et recréés à tout moment, mais les données des volumes, elles, ne se recréent pas. Conservez régulièrement des fichiers de dump de vos bases de données, et protégez l'ensemble du serveur avec la sauvegarde automatique ou des instantanés. La méthode est dans le guide des sauvegardes et instantanés.
Le fichier Compose pour déployer WordPress avec Docker se trouve dans le guide d'installation de WordPress. Pour déployer plusieurs applications depuis une interface avec certificats HTTPS automatiques, créez un serveur avec l'image Coolify ou Dokploy. Les tailles adaptées à un usage dédié aux conteneurs sont présentées sur la page VPS conteneur.
