So sieht die Meldung aus
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 deniedHäufige Ursachen
- Dein Benutzer ist nicht in der Gruppe
docker. - Du wurdest zur Gruppe hinzugefügt, deine aktuelle Sitzung kennt aber noch die alte Gruppenliste.
- Die Rechte von
/var/run/docker.sockwurden geändert. - Ein Skript oder CI-Job läuft unter einem anderen Benutzer als dem, mit dem du getestet hast.
- Bei Rootless Docker zeigt der Client auf den falschen Socket.
Prüfen
- Welche Gruppen hat deine Sitzung?
id - Wem gehört der Socket?
ls -l /var/run/docker.sock - Läuft der Daemon überhaupt?
systemctl status docker
Lösung
- Den Benutzer zur Gruppe hinzufügen:
sudo usermod -aG docker $USER. - Ab- und wieder anmelden oder eine Shell mit der neuen Gruppe starten:
newgrp docker. - Für einen schnellen Einzelfall den Befehl mit
sudoausführen. - Bei CI oder Diensten den Dienstbenutzer zur Gruppe hinzufügen und den Dienst neu starten.
- Rootless Docker oder Podman bevorzugen, wenn du keine root-gleichen Rechte vergeben willst.
Häufige Fragen
Ist es sicher, einen Benutzer zur Gruppe docker hinzuzufügen?
Es entspricht root-Rechten auf dem Host, weil ein Container beliebige Verzeichnisse einbinden kann. Nur für Personen tun, denen du Admin-Rechte zutraust.
Und wenn die Meldung sagt, dass gar keine Verbindung zum Daemon möglich ist?
Das ist ein anderer Fehler: Der Docker-Dienst läuft nicht. Mit systemctl start docker starten und bei Misserfolg das Journal lesen.