锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

私有仓库Harbor介绍与部署

时间:2023-10-09 07:07:02 kc120e3e精密电阻

一、Harbor介绍

Harbor是由VMware企业级公司开源Docker Registry管理项目,Harbor主要提供Dcoker Registry管理UI,提供的功能包括:基于角色访问的控制权限管理(RBAC)、AD/LDAP集成、日志审核、管理界面、自我注册、镜像复制、中文支持等。Harbor的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为此,额外提供以下功能:

1)基于角色的访问控制(Role Based Access Control)
2)基于策略的镜像复制(Policy based image replication)
3)扫描镜像的漏洞(Vulnerability Scanning)
4)AD/LDAP集成(LDAP/AD support)
5)删除镜像和清洁空间(Image deletion & garbage collection)
6)友好的管理UI(Graphical user portal)
7)审计日志(Audit logging)
8)RESTful API
9)部署简单(Easy deployment)

Harbor所有组件都在Dcoker中部署,所以Harbor可使用Docker Compose快速部署。特别注意:由于Harbor是基于Docker Registry V2版本,所以docker必须大于等于1.10.0版本docker-compose必须要大于1.6.0版本

二、Harbor仓库结构

Harbor每个组件都是以Docker以容器的形式构建,可以使用Docker Compose部署。如果在环境中使用。kubernetes,Harbor也提供了kubernetes配置文件。Harbor以下容器大概需要组成

  • ui(Harbor核心服务)
  • log(运行着rsyslog日志收集的容器)
  • mysql(由官方mysql由镜像组成的数据库容器)
  • Nginx(使用Nginx做反向代理)
  • registry(官方的Docker registry)
  • adminserver(Harbor配置数据管理器)
  • jobservice(Harbor任务管理服务)
  • redis(用于存储session)

Harbor用于存储和分发Docker企业级镜像Registry服务器:

2.1、harbor依赖组件

1)Nginx(Proxy代理层):Nginx前端代理主要用于分发前端页面ui上传和下载访问和镜像流量; Harbor的registry,UI,token通过前置反向代理统一接收浏览器等服务Docker客户端的请求,并将请求转发给不同的后端服务

2)Registry v二、镜像仓库负责存储镜像文件; Docker官方镜像仓库, 负责储存Docker并处理镜像docker push/pull命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,每次强迫用户docker pull/push所有请求都应携带合法的请求token, Registry会通过公钥对token解密验证

3)Database(MySQL或Postgresql):为core services负责存储用户权限、审计日志、Docker image分组信息等数据

4)Core services(Admin Server):这是Harbor主要提供以下服务:

  • UI:帮助用户管理图形界面registry上的镜像(image), 授权用户
  • webhook:及时获取registry 上image状态变化, 在Registry上配置webhook,传递状态变化UI模块
  • Auth服务:负责根据用户权限给每个人docker push/pull命令签发token. Docker 客户端向Regi?stry如果不包括服务发起请求token,它将被重定向到这里,得到它token后再重新向Registry进行请求
  • API: 提供Harbor,RESTful API

5)Replication Job Service:提供多个 Harbor 实例之间的镜像同步功能

6)Log collector:帮助监控Harbor运行,收集其他组件log,供日后分析

2.2、harbor组件数据流

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

三、Harbor仓库部署

3.1、注意事项

官方提供2种部署Harbor的方式:
1)在线安装: 从Docker Hub下载Harbor的镜像来安装, 由于Docker Hub比较慢, 建议Docker配置好加速器。
2)离线安装: 这种方式应对与部署主机没联网的情况使用。需要提前下载离线安装包: harbor-offline-installer-.tgz 到本地

在线部署方式:非常慢

1)下载Harbor最新的在线安装包
2)配置Harbor (harbor.yml)
3)运行install.sh来安装和启动Harbor
4)Harbor的日志路径:/var/log/harbor

推荐系统配置:

3.2、部署记录

3.2.1、环境准备

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
Harbor以容器的形式进行部署, 因此可以被部署到任何支持Docker的Linux发行版, 要使用Harbor,需要安装docker和docker-compose编排工具,并且具备如下环境:
Python2.7+
Docker Engine 1.10+
Docker Compose 1.6.0+
#====================================================================================================
[root@docker02 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
 
[root@docker02 ~]# setenforce 0
setenforce: SELinux is disabled
[root@docker02 ~]# cat /etc/sysconfig/selinux
....
SELINUX=disabled
 
[root@docker02 ~]# systemctl stop firewalld
[root@docker02 ~]# systemctl disable firewalld
[root@docker02 ~]# firewall-cmd --state
not running
 
[root@docker02 ~]# python --version
Python 2.7.5

3.2.2、安装docker

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#更新yum包
[root@docker02 ~]# yum update
 
#卸载旧版本 Docker
[root@docker02 ~]# yum remove docker docker-common docker-selinux docker-engine -y
 
#安装相关软件包
[root@docker02 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
 
#添加docker源
[root@docker02 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
#安装docker
[root@docker02 ~]# yum -y install docker-ce
 
#启动docker
[root@docker02 ~]# systemctl start docker
[root@docker02 ~]# systemctl enable docker
[root@docker02 ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.8
 Git commit:        6a30dfc
 Built:             Thu Aug 29 05:28:55 2019
 OS/Arch:           linux/amd64
 Experimental:      false
 
Server: Docker Engine - Community
 Engine:
  Version:          19.03.2
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.8
  Git commit:       6a30dfc
  Built:            Thu Aug 29 05:27:34 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

3.2.3、安装docker  compose

01
02
03
04
05
06
07
08
09
10
11
12
#下载docker-compose
[root@docker02 ~]# curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
 
#授权
[root@docker02 ~]# chmod +x /usr/local/bin/docker-compose
 
#查看版本
[root@docker02 ~]# docker-compose version
docker-compose version 1.18.0, build 8dd22a9
docker-py version: 2.6.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

3.2.4、离线方式安装harbor

在线安装可能由于官网源的网络波动导致安装失败

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
元器件数据手册、IC替代型号,打造电子元器件IC百科大全!

相关文章