Erreurs

❌ Erreur Docker/Proxmox "Permission denied — /var/run/docker.sock" — Causes et Solutions

🐳 Docker / Proxmox

Accès refusé au socket Docker — droits utilisateur insuffisants

🐳 Docker/Proxmox 📋 6 causes 🔧 5 solutions
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

terminal
# 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

terminal
# 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

terminal
# 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 jenkins
4

Diagnostiquer avec SELinux

terminal
# 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

terminal
# 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 $USER dans 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