
Ich habe eine Docker Registry (Port 5000) aufgesetzt, welche dann vom Internet aus per Reverse-Proxy (HAproxy) über https (Port 443) erreichbar ist.
Mein Reverse-Proxyist nichtlauscht auf Port 80 (aus verschiedenen Gründen) – nur 443.
Wenn ich jedoch versuche, Bilder in die Registrierung zu ziehen/zu übertragen, erhalte ich diese Fehlermeldung:
> docker push dockerreg.mydomain.tld/foo/bar:tag
The push refers to repository [dockerreg.mydomain.tld/foo/bar]
67e5bc702bd3: Layer already exists
1ee6a18298af: Layer already exists
0d8d066a4449: Layer already exists
....
402111a9b517: Layer already exists
5be968ab3b04: Layer already exists
b8d33b7d28fe: Layer already exists
Patch http://dockerreg.mydomain.tld/v2/foo/bar/blobs/uploads/840a9fc2-5c10-4c0e-b674-82f76c3794a3?_state=vcTZPbOrQmhcKwilCyutNGwVpFjvWigJCApZHA834757Ik5hbWUiOiJmb3Rvd2V0dGVyL2NsZWFuIiwiVVVJRCI6Ijg0MGE5ZmMyLTVjMTAtNGMwZS1iNjc0LTgyZjc2YzM3OTRhMyIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wOC0xNFQyMTozODo1Mi42MzgxNjY5NTdaIn0%3D:
dial tcp 1.2.3.4:80: i/o timeout
Offenbar versucht es, über http/80 auf die Registrierung zuzugreifen.
Ich konnte den Docker-Login-Befehl verwenden, https://dockerreg....
aber die Docker-Pull/Push-Befehle können nicht mit https:// ausgeführt werden.
Gibt es eine Möglichkeit, auf mein Docker-Register zuzugreifen, ohne eine https-Weiterleitung auf Port 80 meines Reverse-Proxys?
Antwort1
Sie müssen die http- host
Option festlegen:https://docs.docker.com/registry/configuration/#http
Eine vollqualifizierte URL für eine extern erreichbare Adresse für das Register. Wenn vorhanden, wird sie beim Erstellen generierter URLs verwendet. Andernfalls werden diese URLs aus Clientanforderungen abgeleitet.
Dies kann entweder in einer in die Registrierung eingefügten Konfigurationsdatei oder mit der Umgebungsvariable festgelegt werden REGISTRY_HTTP_HOST
.