【问题标题】:Docker hub cache with Harbor带有 Harbor 的 Docker 集线器缓存
【发布时间】:2020-10-03 20:30:38
【问题描述】:

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

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

This 方法也不起作用

【问题讨论】:

    标签: docker docker-registry dockerhub harbor


    【解决方案1】:
    更新了 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/

    【讨论】:

    • 对于我的用例,这并不是真正有效的代理拉动。我想让所有的拉动都通过它。我不想将我所有的图像键都换成可以使用的键。这是为了赶上落后者。
    • 它正在工作。谢谢你的详细解释。
    • @DamithUdayanga,确定!
    • 这很奇怪,因为这里 (github.com/goharbor/harbor/blob/master/contrib/…) 说它可以用作注册表镜像?
    • @Kim 这似乎是可能的,但它禁止使用 Harbor 作为私有推送存储库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多