一、harbor简介
1.1 Harbor是什么?
Harbor是VMware公司开源的企业级DockerRegistry项目,其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。
它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。

1.2 harbor的架构

harbor仓库复制管理手动模式 harbor仓库是什么_nginx


主要组件包括proxy,他是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,上图通过深蓝色线标志;ui提供了一个web管理页面,当然还包括了一个前端页面和后端API,底层使用mysql数据库;registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过hook通知ui创建repositry,上图通过红色线标志,当然registry的token认证也是通过ui组件完成;adminserver是系统的配置管理中心附带检查存储用量,ui个jobservice启动时候需要加载adminserver的配置,通过灰色线标志;jobservice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log,上图通过紫色线标志;log是日志汇总组件,通过docker的log-dirver把日志汇总到一起,通过蓝色线条标志。

1.3harbor特点:
1、基于角色控制:用户与Docker镜像仓库通过"项目"进行组织管理,一个用户可以对多个镜像仓库在统一命名空间(projec)里有不同的权限
2、图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间
3、审计管理:所有这怒地镜像仓库的错都可以被记录追溯,用于审计管理
4、基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制。
5、支持LDAP认证:Harbor的用户授权可以使用已经存在的用户。
6、镜像删除和垃圾回收:image可以被删除并且回收image占用的空间。
7、简单的部署功能:harbor提供了online、offline安装,此外还提供了virtualappliance安装
8、harbor和docker registry的关系:harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

二 Harbor 部署
在compose环境上做,并且要harbor-1.2.2安装包

[root@server1 ~]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local # 解压
[root@server1 ~]# vim /usr/local/harbor/harbor.cfg  修改harbor的配置文件
hostname = 192.168.17.10 #修改为harbor服务器IP地址
[root@server1 ~]# cd /usr/local/harbor/
[root@server1 harbor]# ./install.sh  #启动harbor
[root@server1 harbor]# docker images 查看镜像
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
compose_nginx_nginx         latest              5978f47d4a31        45 hours ago        537MB
nginx                       web                 6cf674b9866c        6 days ago          355MB
nginx                       latest              bc9a0695f571        7 days ago          133MB
nginx                       new                 bc9a0695f571        7 days ago          133MB
centos                      7                   8652b9f0cb4c        2 weeks ago         204MB

使用网页登录查看Harbor仓库:

harbor仓库复制管理手动模式 harbor仓库是什么_harbor仓库复制管理手动模式_02


默认的用户名/密码是admin/Harbor12345

[root@server1 harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1 #登录harbor的字符界面
[root@server1 harbor]# docker pull nginx 下载镜像进行测试
[root@server1 harbor]# docker tag nginx:latest 127.0.0.1/wxp/tomcat:v1 镜像打标签
[root@server1 harbor]# docker push 127.0.0.1/wxp/tomcat:v1  上传镜像到Harbor

harbor仓库复制管理手动模式 harbor仓库是什么_nginx_03


三 客户端远程登录harbor

此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,

Register 服务器在端口 80 上侦听。

以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报

如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜

像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

解决方法
修改配置文件

[root@server1 ~]#  vim /usr/lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.17.10 --containerd=/run/containerd/containerd.sock

[root@server1 ~]# systemctl daemon-reload
[root@server1 ~]# systemctl restart docker #重启docker
[root@server1 ~]#  docker login  -u admin -p Harbor12345 http://192.168.17.10 登录
[root@server1 ~]# docker tag nginx:latest 192.168.17.10/wxp/nginx:new
[root@server1 ~]# docker push 192.168.17.10/wxp/nginx:new

harbor仓库复制管理手动模式 harbor仓库是什么_docker_04


harbor仓库复制管理手动模式 harbor仓库是什么_docker_05


如需重新部署,需要移除 Harbor 服务容器全部数据,持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下

rm -rf /data/database/ 
rm -rf /data/registry/