2

自分のものをアップロードするためにプライベート docker レジストリをセットアップしようとしていますが、行き詰まっています。docker-registry インスタンスはポート 5000 で実行されており、その前にプロキシ パス ディレクティブを使用して nginx をセットアップし、ポート 80 のリクエストを に戻しlocalhost:5000ます。

イメージをプッシュしようとすると、次のエラーが発生します。 Failed to upload metadata: Put http://localhost:5000/v1/images/long_image_id/json: dial tcp localhost:5000: connection refused

nginx構成ファイルでサーバーのIPアドレスを使用してlocalhostを変更すると、問題なくプッシュできます。がnginxから渡されたときにローカルdocker pushコマンドが不平を言うのはなぜですか。localhostlocalhost

それが役立つ場合、サーバーはEC2上にあります。

4

3 に答える 3

2

レジストリによって設定された X-Docker-Endpoints ヘッダーを次のようにオーバーライドします。

proxy_hide_header  X-Docker-Endpoints;
add_header         X-Docker-Endpoints $http_host;
于 2015-04-14T18:54:35.150 に答える
0

あなたが直面している問題は、docker-registry がそれ自体と Docker クライアントの間の対話の早い段階で X-Docker-Endpoints ヘッダーを介していわゆるエンドポイントをアドバタイズしていることと、Docker クライアントがその後のリクエストにそれらのエンドポイントを使用することだと思います.

Docker クライアントが最初に (パブリック) 80 ポートで Nginx と通信し、次にアドバタイズされたエンドポイント (おそらく localhost:5000 (つまり、ローカル マシン)) に切り替えるセットアップがあります。

localhost:5000 でリッスンしている場合でも、エンドポイントをリモート ホストとしてアドバタイズするように、実行する Docker レジストリにオプションが存在するかどうかを確認する必要があります。

于 2013-10-16T12:02:38.787 に答える