能通过代理访问外部镜像仓库的机器,可以用 Skopeo 将镜像复制到内部镜像仓库。请配置执行复制的进程:

export HTTP_PROXY=http://proxy.example.net:8080
export HTTPS_PROXY=http://proxy.example.net:8080
export NO_PROXY=registry.internal.example

skopeo copy --all \
  docker://registry.public.example/team/image:stable \
  docker://registry.internal.example/team/image:stable

仓库名称和镜像引用仅为示例。源经代理访问;内部仓库由绕过条目匹配。对于未配置代理凭据的、获准的公共源复制,在保留该内部绕过条目的前提下,可用 HTTP 代理列表 提供候选 HTTP 端点。请将该条目调整为命令实际使用的目标主机名。

docker:// 是镜像仓库引用所用的镜像传输名称。它并不意味着复制被委托给本机的 Docker 守护进程。除非嵌入的应用程序显式提供不同的代理 URL,Skopeo 的仓库 HTTP 传输会使用环境中的代理发现。

当源引用选择多平台镜像索引或清单列表时,--all 很关键:它要求复制所有被引用的镜像。若没有该选项,复制可能会为当前平台选择一个镜像,而不会重现完整的多平台引用。

复制完成后,下游机器可以使用内部仓库的镜像引用。它们能否拉取取决于其到该仓库的路由;它们不会继承执行复制的进程环境。

相关文章