对于使用感知环境 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 流量的走向,因此在调整该设置前先确定失败的发送方和操作。

相关文章