更新了 TLDR;
在最初回答这个问题时,没有一个好的解决方案。您可以阅读我的原始答案。或者直接向下滚动到更新部分,我告诉你 Harbor v2.1 的博客说他们现在支持这个。
原答案
我可以回答您的部分问题。但第 2 部分的答案是你不能。我可以将问题链接到您,以向您表明由于技术限制,他们明确选择不这样做。好消息是他们知道这仍然是社区想要的东西。
第 1 部分
有一件事你可能不知道,hub.docker 上没有项目组的 repos(如docker pull nginx),在你的港口仍然需要一个匹配的项目。它将匹配项目名称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 中找不到足够好的解决方案,但我们知道这个要求。
更新
Harbor v2.1 的博客表明他们现在已经完全添加了这个功能。我上面的回答对于 2.1 之前的版本是准确的。我没有亲自测试过,但我会链接讨论它的博客文章。
博客:https://goharbor.io/blog/harbor-2.1/