Bei der Arbeit mit Docker werden sogenannte Images verwendet – ausführbare Dateien, die alles enthalten, was zum Ausführen einer Anwendung erforderlich ist, einschließlich Quellcode, Bibliotheken und Abhängigkeiten. Diese Images werden in speziellen Repositories gespeichert, den sogenannten Registrys, die entweder privat oder öffentlich sein können.
Die bekannteste öffentliche Registry ist Docker Hub, wo viele offizielle Images wie Nginx, PostgreSQL, Alpine, Ubuntu, Node und MongoDB zu finden sind. Benutzer können sich bei Docker Hub registrieren und dort eigene Images speichern – standardmäßig mit einem öffentlichen und drei privaten Repositories. Docker Hub ist die Standard-Registry, die Docker zum Herunterladen (Pull) von Images verwendet.
Dieser Leitfaden zeigt, wie man die Standard-Registry in Docker auf eine andere umstellt.
Eine einfache Möglichkeit, externe Registrys zu nutzen, besteht darin, Drittanbieter-Registrys zu verwenden, die von Unternehmen wie Google oder Amazon bereitgestellt werden.
Hier eine Liste öffentlicher Registrys, die verwendet werden können:
|
Registry-URL |
Anbieter |
|
|
|
|
Amazon |
|
|
Red Hat |
|
|
Red Hat |
|
|
Red Hat |
⚠️ Hinweis: Die Nutzung externer Docker-Registrys kann Sicherheitsrisiken bergen – gehe daher vorsichtig vor.
Im Folgenden wird beschrieben, wie du die Standard-Registry (Docker Hub) auf eine andere umstellst.
Öffne die Datei daemon.json mit einem beliebigen Texteditor.
Wenn Docker nicht im Rootless-Modus installiert wurde, befindet sich die Datei unter:
/etc/docker/daemon.json
Falls sie nicht existiert, wird sie mit diesem Befehl erstellt:
nano /etc/docker/daemon.json
Für Rootless Docker liegt die Datei im Benutzerverzeichnis unter:
~/.config/docker/daemon.json
Erstelle sie ggf. mit:
nano ~/.config/docker/daemon.json
Füge den folgenden Parameter hinzu, um eine neue Standard-Registry festzulegen (im Beispiel: Google Mirror Registry):
{
"registry-mirrors": ["https://mirror.gcr.io"]
}
Speichere und schließe die Datei.
Starte anschließend den Docker-Dienst neu, um die Änderungen zu übernehmen:
systemctl reload docker
Nun verwendet Docker beim Herunterladen von Images die neue Registry.
Beispiel: Ziehe das Alpine-Image aus der Google-Registry:
docker pull mirror.gcr.io/alpine
Du kannst auch eine bestimmte Version angeben, z. B.:
docker pull mirror.gcr.io/nginx:1.25.2
Öffne die Datei daemon.json, die sich hier befindet:
C:\Users\<dein_benutzername>\.docker\daemon.json
Füge den Registry-Mirror-Parameter hinzu:
{
"registry-mirrors": ["https://mirror.gcr.io"]
}
Speichere die Datei und starte Docker neu. Klicke dazu mit der rechten Maustaste auf das Docker-Symbol in der Taskleiste und wähle "Restart".
Alternativ kannst du die Einstellung direkt über die Docker Desktop-Oberfläche vornehmen - Navigiere zu Settings → Docker Engine und füge Folgendes hinzu:
{
"registry-mirrors": ["https://mirror.gcr.io"]
}
Klicke anschließend auf Apply & Restart, um die Änderungen zu übernehmen.
Nach dem Neustart wird Docker die neue Registry für Image-Pulls verwenden.
Beispiel: Lade ein curl-Image herunter:
docker pull mirror.gcr.io/curlimages/curl
Oder ziehe eine bestimmte Version:
docker pull mirror.gcr.io/node:21-alpine
Alternativ kannst du Nexus verwenden, um Docker-Images zu verwalten. Nexus unterstützt sogenannte Proxy-Repositories, die Images aus externen Registrys wie Docker Hub zwischenspeichern (cachen). So kann Nexus als Caching-Proxy fungieren, falls externe Registrys vorübergehend nicht erreichbar sind.
Melde dich in Nexus mit einem Administrator oder einem Benutzer mit Repository-Verwaltungsrechten an.
Gehe zu Server Administration and Configuration → Repositories.
Klicke auf Create repository und wähle den Typ docker (proxy).
Fülle die erforderlichen Felder aus:
Name: Vergib einen eindeutigen Namen für das Repository.
Online: Aktivieren, damit das Repository Anfragen annehmen kann.
Proxy-Server: Wenn Nexus hinter einem Proxy (z. B. Nginx) läuft, sind keine Ports für Authentifizierung erforderlich.
Ohne Proxy sollte ein eindeutiger Port für HTTP oder HTTPS zugewiesen werden.
Allow anonymous docker pull: Aktivieren, um Images ohne Anmeldung zu ziehen.
Falls deaktiviert, ist ein Login erforderlich.
Remote storage: Gib die URL der externen Registry an (z. B. https://registry-1.docker.io für Docker Hub).
Nach dem Erstellen des Repositories kannst du dich – falls erforderlich – bei Nexus anmelden:
docker login <nexus_registry_address>
Ein Image wird dann wie folgt heruntergeladen:
docker pull <nexus_registry_address>/image_name:tag
Beispiel: Ziehe ein Python-Image mit Tag 3.8.19-alpine:
docker pull nexus-repo.com/python:3.8.19-alpine
⚠️ Sicherheits-Tipp: Verwende nicht den Tag latest, da er potenziell instabile oder unsichere Versionen enthalten kann.
Dieser Artikel hat verschiedene Methoden gezeigt, um Docker-Images herunterzuladen und zu speichern. Externe Registrys können nützlich sein, wenn die Standard-Registry (Docker Hub) nicht verfügbar ist. Wenn du externen Anbietern nicht vertraust, kannst du jederzeit deine eigene private oder öffentliche Docker-Registry einrichten – etwa über Nexus oder Harbor.