Erreurs
❌ Erreur Docker/Proxmox "Permission denied — /var/run/docker.sock" — Causes et Solutions
🐳 Docker / Proxmox
Accès refusé au socket Docker — droits utilisateur insuffisants
L'erreur
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock indique que l'utilisateur courant n'a pas les droits pour accéder au socket Docker. C'est une erreur de permissions Unix — pas un problème Docker.⚠️ Causes possibles
Utilisateur absent du groupe docker
Le compte utilisateur n'est pas membre du groupe 'docker'
Reconnexion non effectuée après ajout
L'utilisateur a été ajouté au groupe mais ne s'est pas reconnecté
Socket avec mauvais propriétaire
Le socket appartient à root:root au lieu de root:docker
SELinux / AppArmor bloque
Le module de sécurité empêche l'accès même avec les bons droits Unix
Docker dans un conteneur CI/CD
Le runner CI (Jenkins, GitLab) n'a pas accès au socket de l'hôte
Rootless Docker mal configuré
Docker rootless utilise un socket différent non configuré
🔧 Solutions étape par étape
1
Solution rapide — ajouter au groupe docker
# Ajouter l'utilisateur au groupe docker sudo usermod -aG docker $USER # Appliquer immédiatement (sans déconnexion) newgrp docker # Vérifier que l'ajout a fonctionné groups # Doit afficher 'docker' dans la liste # Vérifier les droits du socket ls -la /var/run/docker.sock # srw-rw---- 1 root docker → OK # srw-rw---- 1 root root → Problème (groupe incorrect)
2
Corriger le groupe du socket
# Si le socket appartient à root:root au lieu de root:docker
# Changer le groupe du socket
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
# Vérifier
ls -la /var/run/docker.sock
# Doit afficher : srw-rw---- 1 root docker
# Cette correction est temporaire — le socket est recréé au redémarrage Docker
# Pour rendre permanent, ajouter dans /etc/docker/daemon.json :
{
"group": "docker"
}3
CI/CD — Monter le socket dans le conteneur
# GitLab CI — monter le socket Docker
# .gitlab-ci.yml
build:
image: docker:latest
services:
- docker:dind
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ""
script:
- docker info
# Alternative — monter le socket de l'hôte (moins sécurisé)
# docker run -v /var/run/docker.sock:/var/run/docker.sock image
# Jenkins — configurer l'agent avec accès Docker
# Ajouter jenkins au groupe docker sur l'hôte
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins4
Diagnostiquer avec SELinux
# Vérifier si SELinux bloque ausearch -m avc -ts recent | grep docker audit2why < /var/log/audit/audit.log | grep docker # Permettre Docker avec SELinux setsebool -P container_manage_cgroup on # Si politique manquante — générer et installer ausearch -m avc -ts recent | audit2allow -M docker-custom semodule -i docker-custom.pp # Voir le contexte SELinux du socket ls -Z /var/run/docker.sock
5
Utiliser sudo temporairement
# Solution temporaire — utiliser sudo sudo docker ps sudo docker run hello-world # Pour éviter le mot de passe à chaque fois # Ajouter dans /etc/sudoers (via visudo) username ALL=(ALL) NOPASSWD: /usr/bin/docker # ⚠️ Solution de contournement seulement # La bonne solution = groupe docker (voir Solution 1) # Vérifier que sudo fonctionne sudo docker info | grep "Server Version"
🛡️ Comment éviter cette erreur
- ✅ Intégrer
usermod -aG docker $USERdans le playbook Ansible d'installation des serveurs - ✅ Dans les pipelines CI/CD, utiliser Docker-in-Docker (dind) plutôt que de monter le socket hôte
- ✅ Documenter la procédure d'ajout au groupe docker dans le wiki d'onboarding des nouveaux développeurs
- ✅ Vérifier les droits du socket après chaque mise à jour Docker majeure
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google