我如何代理 Internal Nexus Docker 存储库?

How Do I Proxy Internal Nexus Docker Repositories?

我们已经部署了 Sonatype Nexus 3 用作我们的内部工件存储库,它工作得很好......现在我们已经在我们的临时环境中完成了我们的概念验证,我们已经部署了 2 个额外的 Nexus 服务器在我们的一些远程网络中,以减少整个 WAN 的带宽利用率。因此,在 "satellite" nexus 服务器上,我创建了一个 Proxy Docker 存储库,用于代理我们的主要 Nexus 服务器。我遇到的问题是,当我尝试从其中一个卫星 Nexus 存储库中提取容器图像时,它找不到任何容器。当我代替我们 docker search 时,我可以看到容器,但它们列在错误的主机名下!!

docker search --limit 50 satellite.mycompany.com/mycontainer
NAME                                                 DESCRIPTION   STARS      OFFICIAL   AUTOMATED 
primary.mycompany.com/mycontainer:0.0.1                            0
primary.mycompany.com/mycontainer:0.0.2                            0
primary.mycompany.com/mycontainer:0.0.3                            0
primary.mycompany.com/mycontainer:0.0.4                            0
primary.mycompany.com/mycontainer:latest                           0

有谁知道我该如何解决这个问题?

最近发布的 3.0.2-02 解决了这个问题。您可以将主 Nexus 服务器上显示的存储库 URL 作为您的远程存储位置:

http(s)://<nexus host>/repository/<docker repo>

然后,按照您的预期配置所有内容,一切正常。一个例外是 "searching" 通过 docker search 将显示来自上游 repo 的主机名标签。例如:

docker search satellite.docker.mycompany.com/my-image

将return:

primary.docker.mycompany.com/my-image

Docker 拉,但是,工作得很好。