写点什么

使用 Harbor 搭建 Mirror Registry

用户头像
xcbeyond
关注
发布于: 2021 年 04 月 14 日

Harbor配置为Mirror服务器后,在客户端使用docker pull 不存在于harbor仓库中的image时,mirror服务器先从remote registrypull image,并缓存于mirror服务器中,下次直接在 mirror 中拉取 image,不再需要从 remote registry 拉取。


Harbor 作为 Mirror 服务器时:

1. 只能 pull 不能 push,解决方法是:把用户私服和 mirror 分开架设。

2. 在 ui 上不能删除仓库中的镜像。

3. 官方的 image 放在 library 项目中

一、首先安装 Harbor 

https://www.jianshu.com/p/08663f7a6348


二、配置为 Mirror Registry

1. 编辑 common/config/registry/config.yml ,并增加以下配置(设置远端 docker 仓库为 docker 官网地址,也可以设置为国内源):

proxy:  remoteurl: https://registry-1.docker.io
复制代码

如果需要代理docker Hub的私有仓库,配置如下:

proxy:
  remoteurl: https://registry-1.docker.io
  username: username #docker hub 的账号
  password: password #docker hub 的密码
复制代码

使配置生效:

[root@harbor harbor]# docker-compose down
[root@harbor harbor]# docker-compose up -d
复制代码

检查状态,确保所有容器的状态为 Up (healthy):

[root@harbor harbor]# docker-compose ps
      Name                    Command                  State                                    Ports                             
-------------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver  /harbor/start.sh                Up (healthy)                                                                 
harbor-db            /usr/local/bin/docker-entr ...  Up (healthy)  3306/tcp                                                       
harbor-jobservice    /harbor/start.sh                Up (healthy)                                                                 
harbor-log          /bin/sh -c /usr/local/bin/ ...  Up (healthy)  127.0.0.1:1514->10514/tcp                                     
harbor-ui            /harbor/start.sh                Up (healthy)                                                                 
nginx                nginx -g daemon off;            Up            0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp
registry            /entrypoint.sh serve /etc/ ...  Up (healthy)  5000/tcp 
复制代码


2. 客户端访问Mirror Registry

登陆 Registry :

[root@client ~]# docker login registry.company.comUsername (admin):Password:Login Succeeded
复制代码

测试下载私有仓库的 images

例如从docker hub下载images:test/alpine:latest

1)现在 ui 界面创建 test 项目

然后再 pull 私有 image:

[root@client ~]# docker pull registry.company.com/test/alpine:latestlatest: Pulling from test/alpine385e281300cc: Pull completea3ed95caeb02: Pull completeb00bda0d8d25: Pull complete67fe4f6d2a81: Pull complete15c3422237e6: Pull completeb45b695d0b23: Pull completeDigest: sha256:a019c7ecc83984a58b34487593918287f14635dcaf4603f69077f4bcb648b275Status: Downloaded newer image for registry.company.com/test/alpine:latest
复制代码

检查 harbor 的日志,证明已经从 Harbor Mirror Registry 中下载:

tail /var/log/harbor/registry.log
复制代码

再查看 ui 界面发现 test 项目下已经有 alpine 镜像

查看存储位置:

# ls /data/registry/docker/registry/v2/repositories/test/alpine/ -l
复制代码

删除 Harbor 容器,并保留数据:

$ sudo docker-compose down -v
复制代码

删除所有数据:

$ rm -r /data/database$ rm -r /data/registry
复制代码

如果由于其他原因执行 ./prepare 脚本,回删除导致删除配置文件(common/config/) 你可以加上。

例如这配置 Mirror Registry 就需要配置 common/config/registry/config.yml ,如果有执行./prepare 脚本,就需要重新加上 proxy。

3.其他

3.1 配置为Mirror registry 后,就不能往这个registry push image,push 需要单独架设 harbor 仓库

3.2 配置为Mirror registry 后,也不能使用复制功能。

用户头像

xcbeyond

关注

不为别的,只为技术沉淀、分享。 2019.06.20 加入

公众号:程序猿技术大咖,专注于技术输出、分享。

评论

发布
暂无评论
使用Harbor搭建Mirror Registry