環境を意識した HTTP トランスポートを使うコンテナ化された Distribution レジストリでは、S3 の経路をレジストリコンテナに渡します。

services:
  registry:
    environment:
      HTTP_PROXY: http://proxy.example.internal:8080
      HTTPS_PROXY: http://proxy.example.internal:8080
      NO_PROXY: localhost,127.0.0.1

これを既存の image、ストレージ、認証、volumes と統合します。この断片は完全なレジストリではありません。プロキシ名はそのコンテナから到達可能でなければならず、スキームはプロキシのリスナーと一致する必要があります。

デプロイした S3 ドライバーとトランスポートを確認します。Distribution 2.8.3 が引用するソースは AWS SDK セッションを使います。独自のドライバーやトランスポートでは、別の対応構成が必要になる場合があります。

接続設定または調査する主体
クライアント → レジストリレジストリの受信 HTTP リスナーとクライアントの経路
デーモン → image 取得元Docker デーモンのプロキシ設定
レジストリ → S3レジストリプロセスのストレージ HTTP トランスポート

クライアントのログイン成功は最初の経路だけを証明します。ストレージドライバーは S3 へ独自のリクエストを送ります。以前にレジストリ image を取得したデーモンはその呼び出しを行いません。

blob のダウンロード時のリダイレクトも確認してください。Distribution は利用者をオブジェクトストレージへリダイレクトでき、そのクライアントには S3 への直接到達性が必要になります。レジストリのプロキシを設定しても利用者側は設定されません。リダイレクトの動作を変えると blob トラフィックの流れが変わるため、その設定を調整する前に、失敗している送信元と操作を特定してください。

関連記事