场景说明

当咱们的 Docker-Harbor 建立在内网的时分,咱们需求同步外网的的镜像资源,以供咱们内网开发人员下载运用。 这个时分咱们就能够运用 Docker-Harbor 的镜像署理缓存功用。

harbor v2.1 新增了署理缓存的功用,类似nexus能够运用harbor署理并缓存来自公共或私有镜像库房的图像。而且从harbor v2.1.1开始,署理和缓存功用已更新,以与docker hub 的速率约束保持一致

咱们能够运用署理缓存功用让一些访问受限环境能够访问互联网上的镜像,而且假如没有某个镜像,此刻客户端第一次发起pull image 请求会从指定的署理库房下载并缓存到harbor的库房里,下次别的客户端再需求pull 这个镜像就无需从公网再去下载该镜像了,然后防止占用过多带宽或被docker hub 速率约束。

操作过程

  1. 创建DockerHub署理库房

    Harbor运用DockerHub进行署理缓存

    Harbor运用DockerHub进行署理缓存

  2. 创建DockerHub缓存署理项目

    Harbor运用DockerHub进行署理缓存

  3. 运用DockerHub的缓存署理 要开始运用署理缓存,能够通过将docker pull指令或pod 清单运用<harbor_servername>/<proxy_project_name>/作为前缀添加到image标签,以引用署理缓存项目。例如:

    [root@master-01 harbor]# docker login 10.0.0.38:8004
    [root@master-01 harbor]# docker pull 10.0.0.38:8004/dockerhub/mysql:latest
    latest: Pulling from dockerhub/mysql:latest
    0e03bdcc26d7: Pull complete 
    Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
    Status: Downloaded newer image for dockerhub/mysql:latest
    ......
    
  4. 咱们能够看到本地库房和Harbor的dockerhub库房都有mysql:latest镜像了,缓存署理成功