Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

官方地址:https://vmware.github.io

Github:https://github.com/goharbor/harbor

Habor安装部署+SSL_第1张图片
Harbor主要功能

基于角色访问控制(RBAC)
在企业中,通常有不同的开发团队负责不同的项目,镜像像代码一样,每个人角色不同需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。 
例如,开发人员需要对项目构建这就用到读写权限(push/pull),测试人员只需要读权限(pull),运维一般管理镜像仓库,具备权限分配能力,项目经理具有所有权限。 
**镜像复制**
可以将仓库中的镜像同步到远程的Harbor,类似于MySQL主从同步功能。
**LDAP**
Harbor支持LDAP认证,可以很轻易接入已有的LDAP。
**镜像删除和空间回收**
Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。
**图形页面管理**
用户很方面搜索镜像及项目管理。
**审计**
对仓库的所有操作都有记录。
**REST API**
完整的API,方便与外部集成。

Harbor组件

组件 功能
harbor-adminserver 配置管理中心
harbor-db Mysql数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-ui Web管理页面和API
nginx 前端代理,负责前端页面和镜像上传/下载转发
redis 会话
registry 镜像存储

Harbor安装有3种方式:

在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小

离线安装:安装包包含部署的相关镜像,因此安装包比较大

OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor

我们采用离线安装,首先下载离线安装包:https://github.com/goharbor/harbor/releases
1.添加docker的yum源,可以从阿里或腾讯等其他源地址
2.yum install -y docker-ce && systemctl enable docker && docker start docker
3.echo 1 >> /proc/sys/net/ipv4/ip_forward && source /proc/sys/net/ip4/ip_forward
4.curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
5. wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-online-installer-v1.9.0.tgz
[root@git_harbor ~]# tar -zxvf harbor-offline-installer-v1.9.0.tgz -C /usr/local/
[root@git_harbor ~]# mkdir /usr/local/harbor/ssl
[root@git_harbor ssl]# openssl genrsa -out ca.key 2048
Generating RSA private key, 2048 bit long modulus
..............................................................................................................................................................................+++
......................+++
e is 65537 (0x10001)
[root@git_harbor ssl]# openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:local.harbor.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@git_harbor ssl]# 
[root@git_harbor ssl]# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Signature ok
subject=/C=XX/L=Default City/O=Default Company Ltd/CN=local.harbor.com
Getting Private key
[root@git_harbor ssl]# vim ../harbor.yml
hostname: local.harbor.com
https:
   certificate: /usr/local/harbor/ssl/ca.crt
   private_key: /usr/local/harbor/ssl/ca.key
[root@git_harbor harbor]# ./prepare
[root@git_harbor harbor]# ./install.sh

6.修改server的hosts以及本机hosts
7.访问Harbor
8.登录harbor
docker login https://login.harbor.com/ -uadmin