
Heute hatten wir einen interessanten Fall beim Einrichten von Registry-Mirroring in Harbor. Harbor kann für gängige Dienste wie docker.io, ghcr.io, quay.io und gcr.io ein Proxy-Repository anlegen.
Das Problem: Diese Proxys lassen sich nur als eigene Projekte einrichten. Um Alpine von ghcr.io über Ihr Harbor zu ziehen, schreiben Sie also nicht mehr
docker pull ghcr.io/linuxcontainers/alpine:latest
sondern
docker pull myharbor.org/ghcr-proxy/linuxcontainers/alpine:latest
Der Pfad zu den Images ändert sich also, und Sie können myharbor.org nicht in der Docker-Konfiguration für Registry-Mirrors eintragen. Diese sieht so aus und kennt keine Einstellung für einen geänderten Pfad:
{
"registry-mirrors": ["https://myharbor.org"]
}
Die Lösung ist recht einfach: In Nginx werden Umschreibungen eingerichtet, sodass ein Pull von einer bestimmten Subdomain
docker pull ghcr-proxy-myharbor.org/linuxcontainers/alpine:latest
tatsächlich von
myharbor.org/ghcr-proxy/linuxcontainers/alpine:latest
bedient wird. Auf diese Weise können Sie mehrere Registry-Mirrors für verschiedene Projekte in Harbor einrichten:
{
"registry-mirrors": ["https://ghcr-proxy-myharbor.org", "https://docker-proxy-myharbor.org"]
}
Die Images werden dann automatisch und transparent über diese Mirrors gezogen. Selbst wenn Sie
docker pull ghcr.io/linuxcontainers/alpine:latest
ausführen, läuft der erste Versuch, das Image zu ziehen, über das cachende Harbor.
Tatsächlich besteht dieses Problem schon seit mehreren Jahren, und in einem GitHub-Issue haben Enthusiasten fertige Lösungen geteilt, mit denen sich das vollständig automatisieren lässt.
Bei mir hat diese Konfiguration ohne Probleme funktioniert.
Von Andrei Kvapil am 10. September 2024.
Exportiert von Medium am 5. Oktober 2026.



