Distribution レジストリの S3 リクエストに対するプロキシ設定
S3 にアクセスする Distribution レジストリのプロセスにプロキシ設定を置き、オブジェクトストレージへリダイレクトされるクライアントは別に扱います。
環境を意識した 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 トラフィックの流れが変わるため、その設定を調整する前に、失敗している送信元と操作を特定してください。