配置镜像代理缓存
Harbor 提供的代理缓存功能可以使用 Harbor 来代理和缓存来自公共或私有仓库的镜像。
在互联网访问受限或无法访问的环境中,可以使用代理缓存从 Harbor 或非 Harbor 仓库中拉取镜像;还可以使用代理缓存来限制对公共仓库发出的请求数量,避免消耗过多带宽或被仓库服务器限制。
说明:
从 Harbor v2.1.1 开始,代理缓存功能已更新,以与 Docker Hub 的速率限制策略保持一致。如果要做Harbor 中使用代理缓存,建议您使用 v2.1.1 或更高版,以免避免受到速率限制。
Harbor 系统管理员通过创建一个代理缓存项目来配置代理缓存,该项目使用您已配置的注册表端点(新建目标)连接到目标注册表(目标registry)。代理缓存项目的工作方式类似于普通的 Harbor 项目,只是您不能将镜像推送到代理缓存项目。
1. 工作原理
当有拉取请求到达代理缓存项目时,如果镜像未被缓存,Harbor 会从目标注册表(目标registry)拉取该镜像,然后就可以从代理缓存项目执行类似本地镜像的拉取命令。代理缓存项目随后会缓存该镜像,以供未来请求使用。
下次用户请求该镜像时,Harbor 会检查目标注册表中该镜像的最新清单,并根据以下场景提供镜像服务:
-
如果目标注册表中的镜像没有更新,则从代理缓存项目中提供缓存的镜像。
-
如果目标注册表中的镜像已更新,则从目标注册表拉取新镜像,然后在代理缓存项目中提供并缓存该镜像。
-
如果无法访问目标注册表,则从代理缓存项目中提供缓存的镜像。
-
如果目标注册表中不再有该镜像,则不提供任何镜像。
从 Harbor v2.1.1 开始,Harbor 代理缓存通过发送 HEAD 请求来确定缓存镜像的任何层是否在 Docker Hub 注册表中已更新。使用此方法检查目标注册表不会触发 Docker Hub 的速率限制器。如果任何镜像层已更新,代理缓存将拉取新镜像,这将计入 Docker Hub 的速率限制器。
2. 配置步骤
详细操作说明,请参见 Harbor 官方文档,以下为步骤要点。本文以harbor v2.11.0版本操作进行记录:
2.1 创建目标仓库
Harbor支持代理缓存如下的仓库:
- Harbor
- Docker Hub
- Docker registry
- AWS Elastic Container Registry
- Azure Container Registry
- Google Container Registry
- Quay
- Github Container Registry
- JFrog Artifactory Registry
本文以最知名的仓库Docker hub为例进行配置演示。登录 Harbor Web界面,进入仓库管理页面,点击新建目标,创建需要被代理和缓存的目标镜像仓库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HplEtusv-1722248580686)(https://i-blog.csdnimg.cn/direct/7d380bf71d4d40808d7bc66b47b2f74b.png#pic_center)]
这里提供者选择docker hub,访问id