misterli's Blog.

使用harbor代理缓存docker hub

字数统计: 629阅读时长: 2 min
2020/11/05

Harbor 镜像代理缓存

概述

harbor v2.1 新增了代理缓存的功能,类似nexus可以使用harbor代理并缓存来自公共或私有镜像仓库的图像。并且从harbor v2.1.1开始,代理和缓存功能已更新,以与docker hub 的速率限制保持一致

我们可以使用代理缓存功能让一些访问受限环境能够访问互联网上的镜像,并且如果没有某个镜像,此时客户端第一次发起pull image 请求会从指定的代理仓库下载并缓存到harbor的仓库里,下次别的客户端再需要pull 这个镜像就无需从公网再去下载该镜像了,从而避免占用过多带宽或被docker hub 速率限制。

Harbor仅支持Docker Hub和Harbor注册中心的代理缓存。

创建代理缓存 项目

要使用harbor的代理缓存,我们需要先创建一个仓库,仓库指定使用哪个镜像仓库作为被代理缓存的镜像仓库,再创建一个开启镜像代理的项目,选择是用之前创建的仓库。

1、创建仓库

image-20201105132320193

提供者有以下几种,根据自己实际情况选择即可,我们这里选择docker hub

image-20201105131040693

目标名和描述可以选择一个方便易懂的,如果提供者选择为Docker hub,目标url会自动指定,否则我们需要填写要代理的镜像仓库的url。填写访问id和访问密码要注意是否拥有代理镜像仓库的所有权限还是部分权限,避免某些镜像无法代理缓存。

2、创建项目

新建一个项目,开启镜像代理并选择我们上一步创建的仓库

image-20201105133003457

此时我们相见的这个项目下是没有一个镜像的

image-20201105133214422

默认情况下,Harbor为每个新的代理缓存项目创建镜像7天保留策略。

image-20201105133143363

3、使用代理缓存

要开始使用代理缓存,可以通过将docker pull命令或pod 清单使用<harbor_servername>/<proxy_project_name>/作为前缀添加到image标签,以引用代理缓存项目。例如:

1
2
3
4
5
6
[root@master-01 harbor]# docker pull harbor.lishuai.fun/proxy/library/hello-world:latest
latest: Pulling from proxy/library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
Status: Downloaded newer image for harbor.lishuai.fun/proxy/library/hello-world:latest
harbor.lishuai.fun/proxy/library/hello-world:latest

我们再查看harbor会发现此时该镜像已经被缓存到仓库中了

image-20201105133658000

CATALOG
  1. 1. Harbor 镜像代理缓存
    1. 1.1. 概述
    2. 1.2. 创建代理缓存 项目
      1. 1.2.1. 1、创建仓库
      2. 1.2.2. 2、创建项目
      3. 1.2.3. 3、使用代理缓存