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 谈论它。
我需要在从我的 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 方法也不起作用
最初回答这个问题时,没有很好的解决办法。您可以阅读我的原始答案。或者只是向下滚动到更新部分,我告诉你 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 谈论它。