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 合并。这个片段并不是完整的仓库配置。代理名称必须能从该容器访问,scheme 必须与代理监听器一致。
确认已部署的 S3 驱动和传输。Distribution 2.8.3 引用的源码使用 AWS SDK 会话;自定义驱动或传输可能需要另一种受支持的配置。
| 连接 | 由谁配置或排查 |
|---|---|
| 客户端 → 仓库 | 仓库的入站 HTTP 监听器和客户端路由 |
| 守护进程 → image 来源 | Docker 守护进程代理设置 |
| 仓库 → S3 | 仓库进程的存储 HTTP 传输 |
客户端登录成功只能证明第一条路径。存储驱动会自行向 S3 发出请求;此前拉取仓库 image 的守护进程并不会发出这些调用。
还要检查 blob 下载过程中的重定向。Distribution 可能把使用者重定向到对象存储,从而使该客户端需要直接访问 S3。配置仓库代理并不会配置使用者。改变重定向行为会改变 blob 流量的走向,因此在调整该设置前先确定失败的发送方和操作。