5

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

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

当我从 docker hub 提取图像时,它并没有缓存在我的港口项目中。需要帮助来解决这个问题以及我的请求如何满足港口的要求。

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

这种 方法也不起作用

4

1 回答 1

3
更新了 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/

于 2020-10-07T21:20:38.390 回答