Docker Engine daemon.json: プライベート ECR と S3 のプロキシ除外
VPC エンドポイント経由でプライベート ECR イメージを取得する際に HTTP プロキシを迂回するときは、S3 レイヤーのダウンロードを考慮してください。
プライベート ECR レジストリへの接続が成功しても、イメージの取得は完了しません。マニフェストは ECR が提供し、イメージのレイヤーは Amazon S3 が保存します。そのため、レジストリだけを対象にしたプロキシ迂回では、レイヤーのダウンロードが別の経路を通る可能性があります。
VPC エンドポイント経由のプライベートアクセスでは、両方の経路を確認してください。
- ECR のインターフェイスエンドポイントとそのプライベート DNS 設定。
- S3 エンドポイント、関連付けられたルートテーブル、および ECR のレイヤーバケットへのアクセスを許可するポリシー。
次に、取得を実行するプロセスに該当する迂回先の名前を設定します。既存の daemon.json プロキシ設定があるネイティブな Docker Engine の場合、us-east-2 の構成例は次のとおりです。
{
"proxies": {
"http-proxy": "http://proxy.example:8080",
"https-proxy": "http://proxy.example:8080",
"no-proxy": "123456789012.dkr.ecr.us-east-2.amazonaws.com,prod-us-east-2-starport-layer-bucket.s3.us-east-2.amazonaws.com"
}
}
意図したエントリを、デーモンの他の設定や既存の迂回リストと統合してください。他のパブリックレジストリからのダウンロードがパブリックな中継を使用できる場合、HTTP プロキシ一覧がアカウント不要のプロキシ URL の候補を提供します。プライベートな ECR と S3 の迂回は維持してください。アカウント、リージョン、レイヤーダウンロードのホスト名は、実際に取得で使われる名前に置き換えてください。S3 の命名形式やエンドポイント設定は異なる場合があります。この例は AWS エンドポイントの完全な一覧ではありません。デーモンの設定を適用するには、意図したデーモンの再起動が必要です。Docker Desktop は独自のプロキシ設定を使用します。
迂回は直接経路を選ぶだけです。欠けている S3 エンドポイントの作成、ルートテーブルの関連付け、バケットへのアクセス許可、プライベート DNS の修復はできません。迂回を広範な AWS ドメインに広げる前に、これらの依存関係を確認してください。
Docker クライアントのコンテナ用プロキシ設定は、デーモンのイメージダウンロードを構成しません。同様に、ECR のログイン認証情報を取得する AWS CLI コマンドにも独自のプロキシ設定があり、その別個のリクエストにもプライベートアクセスが必要なら、その API 宛先を含めてください。