Comment résoudre l’erreur Docker “Got permission denied while trying to connect to the Docker daemon socket” [Guide mis à jour 2026]
L’une des erreurs les plus fréquemment rencontrées lors des premiers pas avec Docker est “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock”. Cet article explique en détail les causes et les solutions spécifiques pour cette erreur, mis à jour pour les environnements les plus récents de 2026. C’est une lecture indispensable pour tous les utilisateurs exécutant Docker sur Linux (Ubuntu, CentOS, Debian, etc.).
- Qu’est-ce que cette erreur ? Symptômes observés
- Causes de cette erreur
- Cause 1 : L’utilisateur actuel n’est pas dans le groupe docker
- Cause 2 : Pas de déconnexion/reconnexion après le changement de groupe
- Cause 3 : Le démon Docker n’est pas en cours d’exécution
- Cause 4 : Les permissions de /var/run/docker.sock ont été incorrectement modifiées
- Cause 5 : Restrictions d’accès SELinux ou AppArmor
- Solution 1 : Ajouter votre utilisateur au groupe docker (Recommandée)
- Solution 2 : Utiliser sudo avec les commandes Docker
- Solution 3 : Utiliser le mode Rootless de Docker (Avancé)
- Comment prévenir cette erreur
- Résumé
- Références
Qu’est-ce que cette erreur ? Symptômes observés
Après l’installation de Docker ou lors de l’exécution de commandes docker sur un serveur Linux, vous pourriez voir le message d’erreur suivant :
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
Cette erreur peut survenir avec pratiquement n’importe quelle commande Docker, y compris docker ps, docker run et docker-compose up. Plus précisément, vous pourriez rencontrer les symptômes suivants :
docker run hello-worldéchoue : Le cas le plus fréquent lors de la vérification de l’installation de Dockerdocker psn’affiche pas les conteneurs : Impossible de voir les conteneurs en cours d’exécution à cause d’erreurs de permissionsdocker-compose upne démarre pas : Les applications multi-conteneurs ne parviennent pas à se lancer- Les pipelines CI/CD échouent : Les commandes Docker dans Jenkins, GitHub Actions, GitLab CI, etc. s’arrêtent avec des erreurs de permissions
- L’extension Dev Containers de VS Code ne peut pas se connecter : Impossible de se connecter à Docker dans les environnements de développement à distance
Lorsque cette erreur survient, toutes les fonctionnalités de Docker deviennent inutilisables, interrompant complètement votre travail de développement. C’est particulièrement frustrant pour les utilisateurs qui découvrent Docker.
Causes de cette erreur
Cause 1 : L’utilisateur actuel n’est pas dans le groupe docker
C’est la cause la plus fréquente. Le démon Docker communique par défaut via un socket Unix (/var/run/docker.sock), et ce socket appartient à l’utilisateur root (administrateur). Les utilisateurs normaux doivent appartenir au groupe docker pour exécuter des commandes Docker. La simple installation de Docker n’ajoute pas automatiquement votre utilisateur à ce groupe, ce qui provoque des erreurs de permissions.
# Vérifier les permissions du socket
ls -la /var/run/docker.sock
# Exemple de sortie : srw-rw---- 1 root docker 0 Feb 12 10:00 /var/run/docker.sock
Cause 2 : Pas de déconnexion/reconnexion après le changement de groupe
Après avoir exécuté sudo usermod -aG docker $USER pour ajouter votre utilisateur au groupe docker, vous ne vous êtes pas déconnecté puis reconnecté. Sous Linux, les changements d’appartenance aux groupes ne prennent effet qu’au démarrage d’une nouvelle session (connexion). C’est un oubli très courant, et des questions comme “j’ai exécuté la commande mais ça ne marche toujours pas” apparaissent fréquemment sur Stack Overflow et Reddit.
Cause 3 : Le démon Docker n’est pas en cours d’exécution
Une erreur similaire peut se produire lorsque le service Docker lui-même est arrêté. Cela se produit lorsque Docker n’est pas configuré pour démarrer automatiquement après un redémarrage du serveur, ou lorsque l’installation de Docker est incomplète.
# Vérifier l'état du service Docker
sudo systemctl status docker
Cause 4 : Les permissions de /var/run/docker.sock ont été incorrectement modifiées
Cela se produit lorsque les permissions du fichier socket ont été modifiées manuellement, ou lorsque des outils de sécurité ont réinitialisé les permissions. Le socket devrait avoir les permissions srw-rw---- avec la propriété root:docker ; si les permissions sont différentes, les connexions normales échoueront.
Cause 5 : Restrictions d’accès SELinux ou AppArmor
Sur les distributions Linux à sécurité renforcée (RHEL, CentOS, Fedora, etc.), SELinux peut bloquer l’accès au socket Docker. De même, sur Ubuntu et les systèmes similaires, AppArmor peut en être la cause.
Solution 1 : Ajouter votre utilisateur au groupe docker (Recommandée)
C’est la solution la plus sûre et la plus recommandée. C’est également l’approche recommandée dans la documentation officielle de Docker.
Étape 1 : Vérifier si le groupe docker existe
D’abord, vérifiez que le groupe docker existe sur votre système. Il est normalement créé automatiquement lors de l’installation de Docker, mais il vaut mieux vérifier.
# Vérifier si le groupe docker existe
cat /etc/group | grep docker
Si le groupe n’existe pas, créez-le avec la commande suivante :
# Créer le groupe docker
sudo groupadd docker
Étape 2 : Ajouter l’utilisateur actuel au groupe docker
Utilisez la commande suivante pour ajouter l’utilisateur actuellement connecté au groupe docker :
# Ajouter l'utilisateur actuel au groupe docker
sudo usermod -aG docker $USER
Explication de la commande :
– usermod : Commande pour modifier les comptes utilisateurs
– -a : Mode ajout (ne supprime pas des groupes existants)
– -G docker : Spécifie le groupe docker
– $USER : Rempli automatiquement avec le nom d’utilisateur connecté
Pour ajouter un utilisateur spécifique, remplacez $USER par le nom d’utilisateur :
# Exemple : Ajouter un utilisateur spécifique
sudo usermod -aG docker nom_utilisateur
Étape 3 : Appliquer le changement de groupe
Méthode A : Se déconnecter et se reconnecter (la plus fiable)
# Pour les connexions SSH
exit
# Puis se reconnecter via SSH
# Pour les environnements de bureau
# Se déconnecter et se reconnecter
Méthode B : Utiliser newgrp pour un effet immédiat (terminal actuel uniquement)
# Activer immédiatement le groupe docker dans la session shell actuelle
newgrp docker
Cette méthode ne fonctionne que pour la session de terminal actuelle. Pour les nouveaux terminaux, vous devrez vous déconnecter et vous reconnecter.
Étape 4 : Vérifier la configuration
# Vérifier que vous appartenez au groupe docker
groups
# Tester que Docker fonctionne correctement
docker run hello-world
Si le message Hello from Docker! apparaît, la configuration est terminée avec succès.
Notes importantes
- Oublier l’option
-a(ajout) fera que l’utilisateur n’appartiendra “qu’au” groupe docker, le supprimant de tous les autres groupes. Utilisez toujours-aGensemble - L’appartenance au groupe docker donne à cet utilisateur des privilèges équivalents à root. N’ajoutez que des utilisateurs de confiance
- Dans les environnements WSL2 (Windows Subsystem for Linux), un redémarrage de WSL (
wsl --shutdown) peut être nécessaire
Solution 2 : Utiliser sudo avec les commandes Docker
C’est une solution de contournement pour les environnements où vous ne pouvez pas modifier les paramètres de groupe, ou lorsque vous avez besoin d’utiliser Docker temporairement.
Ajoutez simplement sudo devant toutes les commandes Docker pour les exécuter avec les privilèges root :
# Exécuter les commandes Docker avec sudo
sudo docker run hello-world
sudo docker ps
sudo docker-compose up -d
Cette méthode fonctionne immédiatement mais présente les inconvénients suivants :
- Nécessite de taper
sudoà chaque fois - Rend l’exécution dans Docker Compose et les scripts fastidieuse
sudopeut ne pas être disponible dans les pipelines CI/CD- Les variables d’environnement et les paramètres de contexte Docker utilisent ceux de l’utilisateur
root
Pour une utilisation à long terme, l’ajout de votre utilisateur au groupe docker (Solution 1) est fortement recommandé.
Pour l’utilisation de Docker Compose :
# Docker Compose
sudo docker compose up -d
# Docker Compose legacy (v1)
sudo docker-compose up -d
Solution 3 : Utiliser le mode Rootless de Docker (Avancé)
Le mode Rootless, officiellement pris en charge depuis Docker 20.10, exécute le démon Docker avec les privilèges d’un utilisateur normal. En 2026, Docker Engine 27.x a encore amélioré la stabilité, ce qui en fait l’approche recommandée pour les environnements de production soucieux de la sécurité.
Avantages du mode Rootless
- Aucun privilège root nécessaire
- Risques de sécurité considérablement réduits
- Risque moindre de compromission de l’hôte depuis les conteneurs
Étapes d’installation
D’abord, installez les paquets de dépendances nécessaires :
# Ubuntu/Debian
sudo apt-get install -y uidmap dbus-user-session
# CentOS/RHEL
sudo yum install -y shadow-utils fuse-overlayfs
Ensuite, exécutez le script de configuration du mode Rootless :
# Arrêter Docker existant (rootful)
sudo systemctl disable --now docker.service docker.socket
# Installer le mode Rootless
dockerd-rootless-setuptool.sh install
Configurez les variables d’environnement :
# Ajouter à ~/.bashrc ou ~/.zshrc
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
# Appliquer les paramètres
source ~/.bashrc
# Vérifier le fonctionnement
docker run hello-world
Notes importantes
- Le mode Rootless présente quelques limitations (liaison des ports privilégiés 80/443, certains pilotes de stockage, etc.)
- Les images et volumes créés avec des privilèges root ne peuvent pas être utilisés directement
- La configuration réseau peut différer du mode standard
Comment prévenir cette erreur
Prenez les mesures préventives suivantes pour éviter les erreurs de permissions Docker.
1. Configurer les paramètres de groupe immédiatement après l’installation de Docker
Complétez l’ajout au groupe docker avant d’exécuter votre première commande après l’installation de Docker. Incluez cela dans votre documentation de configuration ou vos scripts pour un processus efficace.
# Exemple de script de configuration post-installation
#!/bin/bash
sudo groupadd docker 2>/dev/null
sudo usermod -aG docker $USER
echo "Veuillez vous déconnecter et vous reconnecter"
2. Automatiser avec Ansible ou des scripts Shell
Lors de l’automatisation du développement en équipe ou de la construction de serveurs, incluez l’installation de Docker et la configuration des groupes dans vos scripts d’automatisation.
3. Vérifier les paramètres de permissions du pipeline CI/CD
Pour GitHub Actions, GitLab CI, Jenkins, etc., vérifiez au préalable que les permissions d’accès au socket Docker sont correctement configurées. De nombreuses plateformes CI/CD nécessitent des configurations spécifiques pour l’utilisation de Docker.
4. Vérifier régulièrement l’état du service Docker
# Activer le démarrage automatique de Docker
sudo systemctl enable docker
# Vérifier l'état du service Docker
sudo systemctl status docker
5. Ne jamais utiliser chmod 666
Vous pourriez trouver chmod 666 /var/run/docker.sock suggéré comme “solution” sur internet, mais c’est extrêmement dangereux du point de vue de la sécurité. Cela donne à tous les utilisateurs l’accès au démon Docker, accordant effectivement les privilèges root à tous. Ne l’utilisez jamais dans les environnements de production.
Résumé
L’erreur Docker “Got permission denied while trying to connect to the Docker daemon socket” est une erreur extrêmement courante rencontrée par pratiquement tous les utilisateurs Linux débutant avec Docker. Cependant, avec une bonne compréhension de ses causes et solutions, elle peut être résolue en quelques minutes.
Points clés :
– Recommandé : Ajouter votre utilisateur au groupe docker avec sudo usermod -aG docker $USER puis se déconnecter et se reconnecter
– Temporaire : Utiliser sudo docker pour l’exécution immédiate des commandes
– Axé sur la sécurité : Envisager le mode Rootless de Docker
Si le problème persiste, vérifiez les éléments suivants :
1. Le service Docker est-il en cours d’exécution ? (sudo systemctl status docker)
2. Les permissions du fichier socket sont-elles correctes ? (ls -la /var/run/docker.sock)
3. Les paramètres SELinux/AppArmor interfèrent-ils ?
Si vous ne parvenez toujours pas à résoudre le problème, nous vous recommandons de poser votre question sur les forums de la communauté Docker ou Stack Overflow en précisant les détails de votre environnement (OS, version de Docker, message d’erreur complet).
Références
- Documentation officielle Docker : Étapes post-installation sous Linux
- Documentation officielle Docker : Mode Rootless
- DigitalOcean : Comment corriger l’erreur permission denied de Docker
- Baeldung : Permission Denied lors de la connexion au Docker Daemon Socket
- Forums communautaires Docker : Permission denied en essayant de se connecter
- phoenixNAP : Comment corriger l’erreur Permission Denied de Docker
- OneUptime : Comment corriger les erreurs Permission Denied de Docker (2026)

コメント