Docker-Fehler treten fast immer an denselben Stellen auf: falsche Image-Namen, belegte Ports, fehlende Berechtigungen oder Netzwerk- und Volume-Probleme. Dieser Guide zeigt dir die 10 häufigsten Docker-Fehler, die typische Fehlermeldung dazu und – wichtiger – die konkrete Lösung samt Befehl. Am Ende findest du eine Diagnose-Checkliste, mit der du praktisch jeden Container-Fehler eingrenzen kannst. Neu bei Containern? Starte mit Was ist Docker?.
Die 10 häufigsten Docker-Fehler auf einen Blick
- Image nicht gefunden (
pull access denied) - Port bereits belegt (
port is already allocated) - Container beendet sich sofort (
Exited (1)) - Permission denied (
EACCES) - Keine Verbindung zum Docker-Daemon
- Netzwerkprobleme (
Could not resolve host) - Volume-Mount-Fehler (
bind source path does not exist) - Out of Memory (
OOMKilled) - Fehlkonfiguration des Docker-Daemons
- Namens-Konflikt (
name is already in use)
1. Image nicht gefunden – „pull access denied“
Ursache: Der Image-Name oder das Tag ist falsch geschrieben oder existiert nicht in der Registry. Bei privaten Images fehlt außerdem oft die Anmeldung.
Error response from daemon: pull access denied for <image>,
repository does not exist or may require 'docker login'Lösung: Prüfe Name und Tag (z. B. nginx:latest). Bei privaten Registries zuerst anmelden:
docker login registry.example.com
docker pull nginx:1.27Tipp: Vermeide :latest in der Produktion – pinne eine feste Version, damit Deployments reproduzierbar bleiben.
2. Port bereits belegt – „port is already allocated“
Ursache: Der Host-Port ist bereits durch einen anderen Prozess oder Container belegt.
Error response from daemon: driver failed programming external
connectivity on endpoint <name>: Bind for 0.0.0.0:<port> failed:
port is already allocatedLösung: Finde den belegenden Prozess und wähle einen freien Port oder stoppe den Konflikt-Container:
sudo lsof -i :8080 # oder: sudo ss -ltnp | grep 8080
docker ps # belegt ihn ein Container?
# neuen Host-Port mappen, z. B. 8081 statt 8080:
docker run -p 8081:80 nginx3. Container beendet sich sofort – „Exited (1)“
Ursache: Der Hauptprozess des Containers bricht sofort ab – meist wegen fehlender Umgebungsvariable, falschem CMD/ENTRYPOINT oder einer nicht erfüllten Abhängigkeit.
# Ursache im Log finden:
docker logs <container>
# Container interaktiv zum Debuggen starten:
docker run -it --entrypoint sh <image>Lösung: Log auswerten, fehlende ENV-Variablen ergänzen und CMD/ENTRYPOINT im Dockerfile prüfen. Exited (0) bedeutet übrigens: der Prozess lief korrekt durch und hat sich beendet – bei kurzlebigen Tasks ist das normal.
4. Permission denied
Ursache: Der Container oder der Host hat nicht die nötigen Rechte – häufig bei gemounteten Volumes mit abweichender User-/Group-ID.
permission denied
EACCES: permission denied, mkdir '/data'Lösung: Besitzer/Rechte des Host-Verzeichnisses setzen oder die passende UID/GID an den Container übergeben:
sudo chown -R 1000:1000 /pfad/zum/volume
docker run --user 1000:1000 -v /pfad/zum/volume:/data <image>Tipp: --privileged ist selten die richtige Lösung – es hebelt die Isolierung aus. Nutze gezielt --user oder --cap-add.
5. Keine Verbindung zum Docker-Daemon
Ursache: Der Docker-Daemon läuft nicht, oder dein Benutzer darf nicht auf den Docker-Socket zugreifen.
Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
Is the docker daemon running?sudo systemctl status docker
sudo systemctl start docker
# ohne sudo arbeiten? Benutzer der docker-Gruppe hinzufügen:
sudo usermod -aG docker $USER # danach neu anmelden6. Netzwerkprobleme – „Could not resolve host“
Ursache: Der Container erreicht kein externes Netz oder findet ein Compose-Netzwerk nicht.
docker network ls
docker network inspect <netzwerk>
# DNS im Container testen:
docker run --rm busybox nslookup google.comLösung: In docker-compose.yml das Netzwerk sauber definieren, DNS prüfen (--dns 1.1.1.1) und bei Firewalls sicherstellen, dass docker0 bzw. die Bridge nicht blockiert wird.
7. Volume-Mount-Fehler – „bind source path does not exist“
Ursache: Der als Bind-Mount angegebene Host-Pfad existiert nicht oder ist relativ statt absolut angegeben.
Error response from daemon: invalid mount config for type "bind":
bind source path does not existLösung: Host-Pfad anlegen und absolut angeben (mit / beginnend). Ein verwandter, häufiger Compose-Fehler ist service refers to undefined volume – hier fehlt der Eintrag im Top-Level-volumes:-Block. Mehr dazu: Docker-Compose: undefined volume – Lösung.
8. Out of Memory – „OOMKilled“
Ursache: Der Container überschreitet sein Speicherlimit und wird vom Kernel beendet.
docker inspect <container> --format '{{.State.OOMKilled}}'
free -m
# Speicher gezielt limitieren:
docker run --memory=1g --memory-swap=1g <image>Lösung: Limit erhöhen oder die Anwendung optimieren. Setze bewusst --memory, damit ein Container nicht den ganzen Host mitreißt.
9. Fehlkonfiguration des Docker-Daemons
Ursache: Ein Syntaxfehler in /etc/docker/daemon.json verhindert den Start des Daemons.
sudo dockerd --validate # Config prüfen (neuere Versionen)
sudo journalctl -u docker -e # Startfehler ansehen
sudo systemctl restart dockerTipp: Validiere die JSON-Datei vor dem Neustart – ein fehlendes Komma legt den kompletten Daemon lahm.
10. Namens-Konflikt – „name is already in use“
Conflict. The container name "/<name>" is already in use by
container "<id>"Lösung: Alten Container entfernen oder neu benennen:
docker rm <name> # oder: docker rm -f <name>
docker run --name mein-app-v2 <image>Docker-Fehler systematisch diagnostizieren
Die meisten Fehler lassen sich mit vier Befehlen eingrenzen. Diese Reihenfolge hat sich bewährt:
docker logs -f <container> # Was sagt die Anwendung?
docker inspect <container> # Config, Mounts, Netzwerk, Exit-Code
docker events # Live-Ereignisse des Daemons
docker system df # Platz-/RessourcenübersichtSo vermeidest du Docker-Fehler von vornherein
- Feste Image-Tags statt
:latestverwenden. - Volumes und Netzwerke in
docker-compose.ymlexplizit definieren. - Healthchecks setzen, damit abhängige Services erst starten, wenn die Datenbank bereit ist.
- Ressourcenlimits (
--memory,--cpus) vergeben. - Regelmäßig aufräumen:
docker system pruneentfernt ungenutzte Layer und Netzwerke.
Verwandte Anleitungen
- Netbird mit Zitadel installieren (Docker Compose)
- Nagios / NCPA Docker Check Script mit Substates
- unRaid: Nextcloud AIO installieren – Schritt für Schritt
Häufige Fragen zu Docker-Fehlern
Wie sehe ich, warum ein Container abgestürzt ist?
Mit docker logs <container> siehst du die Ausgabe der Anwendung, mit docker inspect <container> den Exit-Code und die Konfiguration. Beides zusammen zeigt fast immer die Ursache.
Was bedeutet „Exited (0)“ gegenüber „Exited (1)“?
Exited (0) heißt: erfolgreich beendet. Exited (1) (oder ein anderer Wert > 0) signalisiert einen Fehler – dann lohnt der Blick ins Log.
Wie gebe ich einen belegten Port wieder frei?
Ermittle mit sudo lsof -i :<port> den Prozess. Ist es ein Container, stoppe ihn mit docker stop <name>; sonst beende den Host-Prozess oder wähle einen anderen Host-Port.
Fazit
Die meisten Docker-Fehler sind Konfigurations- statt Software-Probleme – und mit docker logs und docker inspect schnell gefunden. Wer feste Tags, saubere Volumes und Ressourcenlimits nutzt, vermeidet die häufigsten Stolperfallen von vornherein.

