docker-Befehle scheitern mit 'Cannot connect to the Docker daemon'? Meist läuft der Dienst nicht oder Rechte fehlen. So läuft es wieder.
Aufwand:
ca. 10 Min.
Voraussetzung:
sudo-Rechte
Das Symptom
Du tippst ein simples docker ps oder docker run und statt Containern
erscheint: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? Die Frage am Ende
ist rhetorisch gemeint, wird aber gern trotzig mit „natürlich läuft der“
beantwortet.
Die „Layer 8“-Wahrheit
Docker besteht aus zwei Teilen: dem docker-Befehl (Client) und dem Daemon, der
die eigentliche Arbeit macht. Der Client redet über einen Unix-Socket mit dem
Daemon – und die Fehlermeldung sagt exakt, dass dieses Gespräch nicht
zustandekommt. In der Praxis heißt das fast immer eins von zwei Dingen: Der
Daemon läuft schlicht nicht (nach Neustart nie aktiviert, oder Docker Desktop
gar nicht gestartet), oder er läuft, aber der eigene Benutzer darf nicht auf den
Socket zugreifen, weil er nicht in der docker-Gruppe ist. Kein Bug – nur ein
Dienst, der auf sein Startsignal wartet.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.
Läuft der Docker-Daemon?
Auf Linux Status prüfen und bei Bedarf starten bzw. dauerhaft aktivieren:
sudo systemctl status docker
sudo systemctl enable --now docker
2.
Docker Desktop starten (Windows/macOS)
Unter Windows und macOS läuft der Daemon in Docker Desktop. Das Programm muss geöffnet und der Wal im Statusbereich grün/ruhig sein, bevor docker-Befehle im Terminal funktionieren.
3.
Rechte für den Docker-Socket setzen
Kommt der Fehler nur ohne sudo, fehlt die Gruppenmitgliedschaft. Benutzer zur docker-Gruppe hinzufügen und neu anmelden:
sudo usermod -aG docker $USER
newgrp docker
4.
Socket und Umgebungsvariable prüfen
Kontrollieren, ob der Socket existiert und ob eine abweichende DOCKER_HOST-Variable den Client fehlleitet:
ls -l /var/run/docker.sock
echo "$DOCKER_HOST"
5.
Docker-Kontext zurücksetzen
Ein falsch gewählter Kontext (z. B. ein nicht laufender Remote-Host) verursacht denselben Fehler. Kontexte auflisten und auf den lokalen Standard wechseln:
docker context ls
docker context use default
Häufige Fragen (FAQ)
?Was bedeutet 'Cannot connect to the Docker daemon at unix:///var/run/docker.sock'?
Der Docker-Client findet keinen laufenden Docker-Daemon. Entweder ist der Dienst gestoppt (Linux: systemctl start docker), Docker Desktop wurde nicht gestartet (Windows/macOS), oder deinem Benutzer fehlen die Rechte auf den Socket.
?Wie kann ich Docker ohne sudo ausführen?
Den eigenen Benutzer zur Gruppe 'docker' hinzufügen: 'sudo usermod -aG docker $USER'. Danach ab- und wieder anmelden, damit die Gruppe geladen wird. Achtung: Mitglieder der docker-Gruppe haben faktisch Root-Rechte.
Belege
Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.
Docker bricht mit 'no space left on device' ab, obwohl scheinbar Platz da ist? Alte Images, Container und Build-Cache fressen die Platte. So räumst du auf.
SWLästigpermission denied while trying to connect to the Docker daemon socket