更新了 TLDR;
在最初回答这个问题时,没有一个好的解决方案。您可以阅读我的原始答案。或者只是向下滚动到更新部分,我告诉你 Harbor v2.1 的博客说他们现在支持这个。
原始答案
我可以回答你的部分问题。但第 2 部分的答案是你不能。我可以将问题链接到您,以向您表明由于技术限制,他们明确选择不这样做。好消息是他们知道这仍然是社区想要的东西。
第1部分
您可能不知道的一件事是,在 hub.docker 上没有项目组(如docker pull nginx
)的 repos,仍然需要在您的港口中有一个匹配的项目。它将匹配项目名称library
。因此,请确保您有一个名为library
. 没有这个library
项目可能不会影响通过缓存,但它肯定会影响复制。
我的设置包含:港口网址:harbor.mydomain.com
项目:
- 图书馆
- cache_proxy-hub-docker
我得到了以下示例:
docker pull harbor.mydomain.com/cache_proxy-hub-docker/goharbor/redis-photon:v2.1.0
v2.1.0: Pulling from cache_proxy-hub-docker/goharbor/redis-photon
b2823a5a3d08: Pull complete
...omitted...
369af38cd511: Pull complete
Digest: sha256:11bf4d11d81ef582401928b85aa2e325719b125821a578c656951f48d4c716be
请记住,对于类似的事情docker pull ngninx
,您必须像实际上那样做library/nginx
docker pull harbor.mydomain.com/cache_proxy-hub-docker/library/nginx
Using default tag: latest
latest: Pulling from cache_proxy-hub-docker/library/nginx
d121f8d1c412: Pull complete
...ommitted...
Digest: sha256:fc66cdef5ca33809823182c9c5d72ea86fd2cef7713cf3363e1a0b12a5d77500
当我查看 projects/cache_proxy-hub-docker 时,我看到:
- cache_proxy-hub-docker/library/nginx
- cache_proxy-hub-docker/goharbor/redis-photon
还请记住,带有前缀的拉取命令也将是拉取后该图像在您的机器上的名称。您必须将其重新标记为您所期望的真实状态。这就是为什么 docker daemon 解决方案如此吸引人的原因......
第2部分
我在同样的问题上跑来跑去。最后,我怀疑他们没有以这种方式实施。那是对的:
https://github.com/goharbor/harbor/issues/8082#issuecomment-698012277
问题:
无论如何将 Harbor 2.1 配置为透明的 docker hub 镜像?...
回答:
不是在这个时候......我们在 2.1 中找不到足够好的解决方案,但是我们知道这个要求。
更新
用于 v2.1 的 Harbor 博客表明他们现在已完全添加此功能。我上面的回答对于 2.1 之前的版本是准确的。我没有亲自测试过,但我会链接讨论它的博客文章。
博客:https ://goharbor.io/blog/harbor-2.1/