使用Harbor搭建Mirror Registry
把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 后,也不能使用复制功能。