Come appare il messaggio
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/containers/json": dial unix /var/run/docker.sock: connect: permission deniedCause frequenti
- Il tuo utente non è nel gruppo
docker. - Sei stato aggiunto al gruppo ma la sessione corrente ha ancora l'elenco di gruppi vecchio.
- I permessi di
/var/run/docker.socksono stati cambiati. - Uno script o un job CI gira con un utente diverso da quello con cui hai provato.
- Con Docker rootless il client punta al socket sbagliato.
Verifica
- Di quali gruppi fa parte la tua sessione?
id - Di chi è il socket?
ls -l /var/run/docker.sock - Il demone è attivo?
systemctl status docker
Soluzione
- Aggiungi l'utente al gruppo:
sudo usermod -aG docker $USER. - Esci e rientra, oppure avvia una shell con il nuovo gruppo:
newgrp docker. - Per un caso singolo esegui il comando con
sudo. - Per CI o servizi aggiungi l'utente del servizio al gruppo e riavvia il servizio.
- Preferisci Docker rootless o Podman se non vuoi dare diritti equivalenti a root.
Domande frequenti
È sicuro aggiungere un utente al gruppo docker?
Equivale a dare i diritti di root sull'host, perché un container può montare qualsiasi directory. Fallo solo per persone di cui ti fidi come amministratori.
E se il messaggio dice che non si connette per niente al demone?
È un errore diverso: il servizio Docker non è attivo. Avvialo con systemctl start docker e leggi il journal se fallisce.