Docker 带有 Harbor 的集线器缓存

Docker hub cache with Harbor

我需要在从我的 Harbor“代理缓存”项目中的 docker 中心拉取时缓存 docker 个图像。因此,我配置了一个带有代理缓存选项的项目。注册表部分还添加了一个新的注册表端点,其提供商为“Docker Hub”。我在 docker 守护进程中添加了以下配置。

cat /etc/docker/daemon.json 
{
 "registry-mirrors": ["https://registry.harbor.com"]
}

虽然我从 docker 集线器中提取图像,但它并未缓存在我的 Harbor 项目中。需要帮助解决这个问题以及我的请求如何通过 harbor 实现。

example
my cache project name = proxy
i need to pull httpd:latest

This 方法也不起作用

更新了 TLDR;

最初回答这个问题时,没有很好的解决办法。您可以阅读我的原始答案。或者只是向下滚动到更新部分,我告诉你 Harbor v2.1 的博客说他们现在支持这个。

原答案

我可以回答你的部分问题。但第 2 部分的答案是你不能。我可以 link 你的问题向你展示,由于技术限制,他们明确选择不这样做。好消息是他们意识到这仍然是社区想要的东西。

第 1 部分

有一件事你可能不知道,在没有项目组的 hub.docker 上回购(比如 docker pull nginx),仍然需要一个项目在你的港口匹配。它将匹配项目名称 library。因此,请确保您有一个名为 library 的项目。没有这个 library 项目可能不会影响通过缓存,但它肯定会影响复制。

我的设置包含: 港口 url: 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 守护程序解决方案如此吸引人的原因...

第 2 部分

我运行 也在讨论同样的问题。最后,我怀疑他们没有这样实现。正确:

https://github.com/goharbor/harbor/issues/8082#issuecomment-698012277

问题:

Is there anyway to configure harbor 2.1 as a transparent docker hub mirror? ...

答案:

not at this time ... we couldn't find a good enough solution in 2.1, but this requirement is known to us.

更新

Harbor blog for v2.1表示他们现在已经完全添加了这个功能。我上面的回答对于 2.1 之前的版本是准确的。我还没有亲自测试过这个,但我会 link 博客 post 谈论它。

博客: https://goharbor.io/blog/harbor-2.1/