把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
后,也不能使用复制功能。
评论