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 Taglatest existiert 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 |