Docker レジストリの pull/push 443 のみ

Docker レジストリの pull/push 443 のみ

Docker レジストリ (ポート 5000) をセットアップしました。これにより、https (ポート 443) 経由のリバース プロキシ (HAproxy) を介してインターネットにアクセスできるようになります。

私のリバースプロキシないポート 80 でリッスンしています (さまざまな理由により) - 443 のみ。

ただし、レジストリにイメージをプル/プッシュしようとすると、次のエラーが発生します。

> 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

どうやらhttp/80経由でレジストリにアクセスしようとしているようだ

docker loginコマンドは使用できましたhttps://dockerreg....が、docker pull/pushコマンドはhttps://では実行できません。

リバース プロキシのポート 80 で https リダイレクトを使用せずに Docker レジストリにアクセスする方法はありますか?

答え1

httphostオプションを設定する必要があります:https://docs.docker.com/registry/configuration/#http

レジストリの外部からアクセス可能なアドレスの完全修飾 URL。存在する場合、生成された URL を作成するときに使用されます。存在しない場合、これらの URL はクライアント要求から派生します。

これは、レジストリに挿入された構成ファイルで設定することも、環境変数を使用して設定することもできますREGISTRY_HTTP_HOST

関連情報