使用Harbor搭建Mirror Registry

2018-11-03  本文已影响0人  富贵_007

把Harbor配置为Mirror服务器后,在客户端使用docker pull 不存在于harbor仓库中的image时,mirror服务器先从remote registry 中pull 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.com

Username (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:latest

latest: Pulling from test/alpine

385e281300cc: Pull complete

a3ed95caeb02: Pull complete

b00bda0d8d25: Pull complete

67fe4f6d2a81: Pull complete

15c3422237e6: Pull complete

b45b695d0b23: Pull complete

Digest: sha256:a019c7ecc83984a58b34487593918287f14635dcaf4603f69077f4bcb648b275

Status: 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 后,也不能使用复制功能。

上一篇下一篇

猜你喜欢

热点阅读