In Container-Umgebungen kann das Herunterladen von Images aus entfernten Registries zu Verzögerungen und Ausfällen führen, insbesondere bei großen Teams oder in Cloud-Umgebungen mit begrenzter Bandbreite. Registry-Mirror bieten hier eine effektive Lösung, um Pulls zu beschleunigen, Netzwerklast zu reduzieren und Ausfälle der Haupt-Registry zu überbrücken. In diesem Artikel erläutern wir praxisnah, wie ein Mirror-Setup für Docker und Compose implementiert wird und welche Best Practices dabei zu beachten sind.
1. Grundlagen eines Registry Mirrors
Ein Registry Mirror ist ein lokaler Proxy, der Anfragen an die Haupt-Registry weiterleitet und gleichzeitig heruntergeladene Images lokal zwischenspeichert. Dadurch werden wiederholte Pulls beschleunigt und die externe Registry entlastet.
Funktionsweise
- Client fordert ein Image an.
- Mirror prüft, ob das Image lokal vorhanden ist.
- Ist es lokal vorhanden, wird es direkt geliefert.
- Andernfalls wird das Image vom Upstream (z. B. Docker Hub) geholt, zwischengespeichert und anschließend ausgeliefert.
2. Voraussetzungen und Infrastruktur
Ein Mirror kann auf einem beliebigen Linux-Host betrieben werden. Wichtig sind ausreichend Speicherplatz für zwischengespeicherte Images und ein stabiles Netzwerk.
Hardware-Empfehlungen
- Festplattenspeicher: mindestens 100 GB für kleine Teams, bei großen Umgebungen deutlich mehr
- RAM: 4–8 GB reichen für den Proxy-Dienst
- CPU: 2–4 vCPU für parallele Pulls
Software-Voraussetzungen
- Docker Engine installiert
- Docker Registry Image:
registry:2 - Optionale TLS-Zertifikate für sichere Kommunikation
3. Mirror Deployment mit Docker
Der einfachste Weg, einen Mirror zu betreiben, ist über das offizielle Docker Registry-Image im Proxy-Modus.
Starten eines Mirrors
docker run -d
-p 5000:5000
--name registry-mirror
-v /opt/registry/data:/var/lib/registry
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io
registry:2
Hierbei wird der lokale Mirror auf Port 5000 bereitgestellt und Images bei Bedarf vom Docker Hub heruntergeladen.
Mit TLS absichern
docker run -d
-p 5000:5000
--name registry-mirror
-v /opt/registry/data:/var/lib/registry
-v /opt/certs:/certs
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key
registry:2
Der Mirror kommuniziert dann verschlüsselt und kann in produktiven Umgebungen verwendet werden.
4. Docker Daemon für Mirror konfigurieren
Damit Docker-Clients automatisch den Mirror nutzen, muss der Daemon entsprechend konfiguriert werden.
Daemon-Konfiguration
{
"registry-mirrors": ["https://my-mirror.local:5000"]
}
Die Datei /etc/docker/daemon.json wird angepasst und der Docker-Dienst neu gestartet:
sudo systemctl restart docker
5. Compose und Mirror Integration
Docker Compose nutzt automatisch die Daemon-Einstellungen. Es ist keine spezielle Compose-Konfiguration nötig, solange der Mirror in der Docker-Daemon-Konfiguration eingetragen ist.
Optional: Pull-Policy anpassen
services:
web:
image: myapp:1.0.0
pull_policy: if-not-present
Dies vermeidet unnötige Pulls und nutzt den lokalen Mirror effizient.
6. Ausfallsicherheit und Redundanz
Ein einzelner Mirror kann ausfallen. Für Produktionsumgebungen empfiehlt sich ein Mirror-Cluster oder mehrere Mirrors hinter einem Load-Balancer.
Strategien
- Mirror-Cluster auf unterschiedlichen Hosts
- Load-Balancer (HAProxy, Nginx) vor Mirrors
- Monitoring von Pull-Raten und Fehlerraten
7. Best Practices
- Images nach Umgebungen (dev/stage/prod) trennen, um Cache-Drift zu vermeiden
- TTL für Cache festlegen, um veraltete Images automatisch zu aktualisieren
- Bandbreitenbegrenzung für Pulls bei Mirror-Synchronisation
- TLS für interne und externe Kommunikation nutzen
- Monitoring für Mirror-Performance einrichten
Mit einem gut konfigurierten Registry-Mirror lässt sich die Entwicklungsproduktivität steigern, Netzwerkverkehr reduzieren und die Verfügbarkeit der Container-Deployments erhöhen. Teams profitieren von schnelleren Pulls und können auch bei Ausfall der Haupt-Registry weiterarbeiten.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











