Image lässt sich nicht pullen - Ursachen und Lösungen
Image lässt sich nicht pullen - Ursachen und Lösungen
docker pull schlägt fehl — je nach Fehlermeldung ist die Ursache eine andere, und die Lösung auch.
Die häufigsten Fehler
unauthorized: authentication required
Error response from daemon: pull access denied, repository does not exist
or may require 'docker login'
Das Image ist privat oder du bist nicht eingeloggt:
docker login
# Für andere Registries:
docker login ghcr.io
docker login registry.example.com
Nach dem Login erneut pullen.
manifest unknown / not found
Error response from daemon: manifest for myimage:latest not found
- Mögliche Ursachen:
- Tippfehler im Image-Namen — Image-Name und Tag genau prüfen
- Falscher Tag —
latestexistiert nicht, obwohl andere Tags vorhanden sind - Privates Image ohne Login (Docker Hub zeigt dann denselben Fehler)
# Verfügbare Tags auf Docker Hub nachschlagen:
# https://hub.docker.com/r/library/nginx/tags
toomanyrequests — Docker Hub Rate Limit
Error response from daemon: toomanyrequests: You have reached your pull rate limit.
Docker Hub limitiert anonyme Pulls: 100 Pulls pro 6 Stunden pro IP. Mit Account: 200 Pulls pro 6 Stunden.
Sofortlösung: Docker Hub Login
docker login
Ein kostenloser Account reicht, um das Limit auf 200 zu erhöhen.
Dauerlösung: Registry Mirror
In /etc/docker/daemon.json:
{
"registry-mirrors": ["https://mirror.gcr.io"]
}
sudo systemctl restart docker
Alternative: GitHub Container Registry (ghcr.io)
Viele populäre Images gibt es auch auf ghcr.io ohne Rate Limit.
timeout / no route to host
Error response from daemon: Get "https://registry-1.docker.io/...": dial tcp: i/o timeout
Netzwerk- oder Firewall-Problem:
# DNS prüfen
nslookup registry-1.docker.io
# Direkte Verbindung testen
curl -v https://registry-1.docker.io/v2/
Häufig verursacht durch Unternehmens-Firewalls oder VPNs, die Docker Hub blockieren.
no space left on device
Error response from daemon: no space left on device
Die Docker-Daten-Partition ist voll:
df -h /var/lib/docker
# Aufräumen:
docker system prune
docker image prune -a # alle ungenutzten Images entfernen
Digest statt Tag pullen
Für reproduzierbare Builds: Images per Digest (unveränderlicher Hash) statt Tag pullen:
# Digest eines Images herausfinden
docker pull nginx:1.25
docker inspect nginx:1.25 --format '{{index .RepoDigests 0}}'
# Per Digest pullen (garantiert identisches Image)
docker pull nginx@sha256:abc123...
Zusammenfassung
| Fehlermeldung | Ursache | Lösung |
|---------------|---------|--------|
| unauthorized | Nicht eingeloggt / privates Image | docker login |
| not found | Falscher Name oder Tag | Image-Name prüfen |
| toomanyrequests | Rate Limit erreicht | docker login oder Mirror |
| timeout | Netzwerk / Firewall | DNS und Routing prüfen |
| no space left | Disk voll | docker system prune |