Configurer Docker sur un serveur LinuxInstallez Docker Engine depuis le dépôt officiel, ajoutez votre utilisateur au groupe docker, activez le démarrage automatique de Docker et renforcez la sécurité du démon via le fichier /etc/docker/daemon.json. Configurez ensuite le réseau, la journalisation et Docker Compose pour les applications multi-conteneurs, puis effectuez les mises à jour, la surveillance et le nettoyage réguliers.
Ce guide pas à pas vous apprendra à configurer Docker correctement sur un serveur Linux, pour 2026 et au-delà. Nous aborderons l'installation sur les distributions Ubuntu/Debian et RHEL, la configuration sécurisée du démon, les permissions utilisateur, la mise en réseau, etc. Docker Compose, la journalisation, les indicateurs et les meilleures pratiques concrètes utilisées dans les environnements d'hébergement.
Ce dont vous aurez besoin (Prérequis)
- Un serveur Linux (Ubuntu 22.04/24.04+, Debian 12+ ou RHEL/CentOS/AlmaLinux/Rocky 8/9+)
- privilèges sudo (ou root)
- Accès Internet sortant aux dépôts Docker
- Ouvrez les ports pour vos applications (par exemple, 80/443 pour le Web).
- Connaissance de base de l'interface de ligne de commande Linux
Mots-clés principaux : configurer Docker sur un serveur Linux. Mots-clés secondaires : installer Docker sur Ubuntu, Docker Compose, sécuriser le démon Docker, renforcer la sécurité d’un serveur Linux.
Étape 1 : Installer Docker sur Linux (prêt pour 2026)
La méthode la plus sûre consiste à utiliser les dépôts Docker officiels afin d'obtenir des packages à jour et signés : docker-ce (Engine), docker-ce-cli, containerd.io et le plugin Docker Compose.
Ubuntu / Debian
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# Add Docker’s official GPG key and repo
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo $ID)/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/$(. /etc/os-release && echo $ID) \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginRHEL/CentOS/AlmaLinux/Rocky
sudo dnf -y install ca-certificates curl gnupg2
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Start and enable Docker
sudo systemctl enable --now dockerVérifier l'installation
sudo systemctl status docker
docker --version
docker compose version
sudo docker run --rm hello-worldÉtape 2 : Configuration post-installation (utilisateur non root, démarrage automatique)
Par défaut, les commandes Docker nécessitent les privilèges d'administrateur (sudo). Pour exécuter Docker en tant qu'utilisateur non root, ajoutez votre utilisateur au groupe docker et activez Docker au démarrage.
# Add your user to the docker group
sudo usermod -aG docker $USER
# Log out and back in (or run newgrp docker) to apply
# Enable on boot and start now
sudo systemctl enable --now dockerSi vous voyez toujours « autorisation refusée », assurez-vous que votre session est actualisée (redémarrez ou reconnectez-vous) et vérifiez avec docker ps.
Étape 3 : Sécuriser et optimiser le démon Docker
Renforcez la sécurité du démon via le fichier /etc/docker/daemon.json. Configurez la journalisation, les cgroups, le stockage et les fonctionnalités de sécurité afin de réduire les risques en environnement de production.
Créer ou modifier le fichier /etc/docker/daemon.json
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2",
"exec-opts": ["native.cgroupdriver=systemd"],
"live-restore": true,
"userns-remap": "default",
"no-new-privileges": true,
"default-address-pools": [
{"base":"10.10.0.0/16","size":24}
]
}
EOF
# Restart and validate
sudo systemctl restart docker
docker info | grep -E 'Cgroup|Storage Driver|Logging Driver'Points forts : la rotation des journaux empêche la saturation du disque ; overlay2 est le pilote de stockage moderne ; le pilote cgroup systemd est conforme aux valeurs par défaut actuelles de Linux ; la restauration à chaud limite le temps d’arrêt des conteneurs lors des mises à niveau des démons ; le remappage de l’espace de noms utilisateur réduit les risques liés aux privilèges des conteneurs ; default-address-pools évite le chevauchement du réseau dans les configurations multi-ponts.
Optionnel : Docker sans privilèges root (isolation supplémentaire)
# Install rootless prerequisites
sudo apt-get install -y uidmap dbus-user-session # Debian/Ubuntu
# or: sudo dnf -y install shadow-utils
dockerd-rootless-setuptool.sh install
systemctl --user enable --now docker
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
docker info | grep RootlessL'option « sans accès root » renforce la sécurité en supprimant les privilèges root du moteur, mais certaines fonctionnalités réseau peuvent être limitées. À utiliser dans les environnements mutualisés ou lorsque les exigences de conformité sont strictes.
Règles du pare-feu (UFW ou firewalld)
# UFW examples
sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status
# firewalld examples
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reloadDocker manipule les règles iptables ; testez toujours votre pare-feu avec des conteneurs en cours d'exécution pour vous assurer que le trafic circule comme prévu.
Étape 4 : Notions de base du réseau Docker (ponts et réseaux personnalisés)
Par défaut, Docker utilise le réseau bridge (docker0). En production, il est recommandé de créer des réseaux bridge personnalisés pour chaque pile d'applications afin de garantir des plages d'adresses IP prévisibles. DNS-Découverte de services basée sur les politiques et contrôle simplifié des politiques.
# Create a custom bridge network with a fixed subnet
docker network create --driver bridge \
--subnet 10.10.10.0/24 --gateway 10.10.10.1 \
app_net
# Attach containers to this network
docker run -d --name web --network app_net -p 80:80 nginx:alpine
docker run -d --name api --network app_net myorg/api:latestLa configuration default-address-pools dans daemon.json garantit que Docker alloue automatiquement des sous-réseaux non chevauchants, ce qui est utile sur les hôtes exécutant plusieurs réseaux personnalisés.
Étape 5 : Docker Compose v2 (Plugin)
Compose simplifie les applications multi-conteneurs. Depuis les versions récentes, Docker Compose est un plugin (pas de binaire Python séparé). Testez avec la version `docker compose`, puis déployez une pile simple. Exemple : une application prête pour la production. Un site web de petite taille, basé sur WordPress et MariaDB..
mkdir -p ~/stacks/wordpress && cd ~/stacks/wordpress
cat > docker-compose.yml << 'YAML'
version: "3.9"
services:
db:
image: mariadb:11
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: strong_db_pass
MYSQL_ROOT_PASSWORD: stronger_root_pass
volumes:
- db_data:/var/lib/mysql
networks:
- wp_net
healthcheck:
test: ["CMD","mysqladmin","ping","-h","localhost"]
interval: 10s
retries: 5
wordpress:
image: wordpress:php8.2-fpm
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: strong_db_pass
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
depends_on:
db:
condition: service_healthy
networks:
- wp_net
nginx:
image: nginx:alpine
volumes:
- wp_data:/var/www/html:ro
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "80:80"
- "443:443"
depends_on:
- wordpress
networks:
- wp_net
volumes:
db_data:
wp_data:
networks:
wp_net:
driver: bridge
YAML
# Bring the stack up
docker compose up -d
docker compose psAjoutez TLS à NGINX et configurez-le. PHP-FPM pour des performances optimales. Pour une disponibilité accrue, envisagez un serveur externe. managed base de données et stockage d'objets.
Étape 6 : Journalisation, métriques et nettoyage
Pour être efficaces, les opérations nécessitent la rotation des journaux, la collecte des métriques et le nettoyage régulier des images/conteneurs.
- Journaux Vous avez activé la rotation du pilote de fichiers JSON. Consultez les journaux du conteneur Docker.
- Métrique: Exposez cAdvisor ou utilisez l'API événements de Docker. Pour Prometheus, ajoutez node_exporter et cadvisor à votre pile Compose.
- Nettoyer: Récupérez périodiquement de l'espace.
# Remove stopped containers, dangling images, unused networks
docker system prune -f
# More aggressive (also removes unused volumes)
docker system prune -a --volumes -f
# Check space usage
docker system dfÉtape 7 : Facultatif — API distante sécurisée (TLS)
Évitez de lier l'API Docker à 0.0.0.0 sans TLS. Si vous avez besoin d'un accès distant management, activez TCP avec des certificats et des restrictions de pare-feu. SSH Le creusement de tunnels est souvent plus simple et plus sûr.
# Example daemon.json additions (use real cert paths and client certs)
{
"hosts": ["fd://","tcp://0.0.0.0:2376"],
"tls": true,
"tlscacert": "/etc/docker/certs/ca.pem",
"tlscert": "/etc/docker/certs/server-cert.pem",
"tlskey": "/etc/docker/certs/server-key.pem",
"tlsverify": true
}
# Then restrict 2376 at the firewall to trusted IPs only.Dépannage et erreurs courantes
- Permission refusée (composez le chemin Unix /var/run/docker.sock) : Ajouter l'utilisateur au conteneur Docker, se reconnecter, confirmer avec les groupes.
- Problèmes liés à cgroup v2 : Assurez-vous que le pilote cgroup systemd est configuré (exec-opts) et que le système a une hiérarchie cgroup unifiée activée (les distributions modernes le font).
- Espace disque insuffisant : Vérifiez la rotation des journaux, nettoyez les anciennes images (docker image prune -a), déplacez le répertoire racine des données Docker vers un disque plus grand.
- Conflits portuaires : Utilisez la commande docker ps pour trouver les ports liés ; remappez-les avec -p host:container ou modifiez les ports d'écoute NGINX.
- Chevauchement des réseaux : Utilisez default-address-pools pour éviter les collisions 172.17.0.0/16 ou définissez des sous-réseaux personnalisés par réseau.
Meilleures pratiques tirées de l'expérience d'hébergement
- Épinglez les versions d'image (par exemple, nginx:1.27-alpine) pour éviter les mises à niveau surprises ; planifiez des fenêtres de maintenance pour les mises à jour.
- Activez Docker Content Trust (exportez DOCKER_CONTENT_TRUST=1) et analysez les images avec votre CI pour réduire les risques liés à la chaîne d'approvisionnement.
- Utilisez des contrôles d'intégrité dans Compose afin que les proxys inverses ne soient pas acheminés vers des conteneurs défaillants.
- État séparé : Conserver les bases de données sur manageservices dédiés ou services dédiés Volumes/instantanés pour une sauvegarde et une restauration faciles.
- Registre et cache privés : utilisez un registre privé ou un miroir de registre pour accélérer les extractions et contrôler la provenance.
- Principe du moindre privilège : utilisez des utilisateurs de conteneurs non root lorsque cela est possible et des systèmes de fichiers root en lecture seule pour les services sans état.
Quand choisir un VPS géré pour Docker
Si vous déployez des applications essentielles à vos revenus, un partenaire d'infrastructure fiable est indispensable. YouStableNos offres VPS avec SSD NVMe, pare-feu dédiés, protection DDoS et sauvegardes par instantané garantissent aux charges de travail Docker les performances et la résilience qu'elles méritent. Concentrez-vous sur vos conteneurs ; nous assurons la stabilité de la plateforme et un support 24h/24 et 7j/7.
FAQ : Configurer Docker sur un serveur Linux
Docker est-il gratuit à utiliser sous Linux ?
Oui. Docker Engine Community Edition (CE) est gratuit et open source. Pour une assistance en entreprise, envisagez les abonnements Docker ou une solution similaire. manageLa plupart des petites et moyennes équipes utilisent Docker CE sur Linux gratuitement.
Comment installer Docker sur Ubuntu 22.04 ou 24.04 ?
Ajoutez la clé GPG et le dépôt officiels de Docker, puis installez docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin et docker-compose-plugin via apt. Les commandes ci-dessus, sous « Ubuntu/Debian », sont compatibles avec les versions 2026 et respectent les bonnes pratiques actuelles.
Comment exécuter Docker sans sudo ?
Ajoutez votre utilisateur au groupe docker avec la commande `sudo usermod -aG docker $USER`, puis déconnectez-vous et reconnectez-vous (ou exécutez `newgrp docker`). Vérifiez avec `docker ps`. Pour une isolation encore plus forte, envisagez d'utiliser Docker sans privilèges root.
Quels sont les paramètres de sécurité les plus importants pour Docker ?
Activez la rotation des journaux, le remappage des noms de domaine utilisateur, l'absence de nouveaux privilèges et la restauration à chaud. Évitez d'exposer l'API distante sans TLS. Exécutez les conteneurs sans privilèges root lorsque cela est possible et maintenez les hôtes à jour. Utilisez des règles de pare-feu et des images minimales (alpine ou sans distribution) pour réduire la surface d'attaque.
Docker ou Podman en 2026 ?
Les deux sont matures et compatibles OCI. Docker reste populaire pour les flux de travail basés sur Compose et son large écosystème. Podman offre une solution sans démon. fonctionnement et intégration SELinux étroite sur les systèmes basés sur RHELChoisissez en fonction des outils, des flux de travail et de la familiarité de l'équipe.
Conclusion
En suivant les étapes ci-dessus, vous pouvez configurer Docker en toute confiance sur un serveur Linux pour la production. Sécurisez le démon, définissez des réseaux sécurisés, adoptez Compose pour les applications multiservices et automatisez les mises à jour, les sauvegardes et la surveillance. Lorsque vous serez prêt à passer à l'échelle supérieure, YouStable Le VPS offre les performances et la fiabilité dont vos conteneurs ont besoin.