harbor仓库的构建及简单使用

                    harbor仓库的构建及简单使用

首先,什么是harbor?

Harbor 是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

好了,说人话,harbor是一个可供企业使用的私有仓库,提供权限管理。存储等功能,也就是说功能和docker官方仓库极为类似,但控制管理权都由搭建harbor者定义的高度可定制化的私人仓库。可以这么理解,harbor就是一个升级版的ftp服务器,只是这个服务器提供的服务是镜像存储,安装,多用户权限管理,并且由于该服务器可安装在企业内部网络中,镜像的传输效率是有绝对的保障。并且该服务器是具有web ui界面的使用NGINX提供对外服务的ftp服务器。

因为该项目是docker仓库项目,自然所有模块都是使用docker镜像来构建,其中使用到的docker镜像如下:

vmware/harbor-log v1.2.0 c7887347f435 2 years ago 200MB

#日志功能

vmware/harbor-jobservice v1.2.0 1fb18427db11 2 years ago 164MB

#工作流程控制

vmware/harbor-ui v1.2.0 b7069ac3bd4b 2 years ago 178MB

#web 的ui界面

vmware/harbor-adminserver v1.2.0 a18331f0c1ae 2 years ago 142MB

#harbor的管理员服务

vmware/harbor-db v1.2.0 deb8033b1c86 2 years ago 329MB

#harbor的数据库

vmware/registry 2.6.2-photon 5d9100e4350e 2 years ago 173MB

#harbor的注册功能

vmware/postgresql 9.6.4-photon c562762cbd12 2 years ago 225MB

#harbor的分布式关系型数据库

vmware/clair v2.0.1-photon f04966b4af6c 2 years ago 297MB

#harbor 的容器漏洞分析服务

vmware/nginx-photon 1.11.13 285492ff20d6 3 years ago 147MB

#NGINX的Python驱动

vmware/harbor-notary-db mariadb-10.1.10 64ed814665c6 3 years ago 324MB

#harbor的HTTPS证书服务

vmware/notary-photon signer-0.5.0 b1eda7d10640 3 years ago 156MB

#证书服务的Python驱动

vmware/notary-photon server-0.5.0 6e2646682e3c 3 years ago 157MB

photon 1.0 e6e4e4a2ba1b 4 years ago 128MB

#harbor的磁力链下载服务

==============================================================

harbor安装的先决条件(必须符合,否则无法安装):

docker-compose 需要版本1.6.0 以及以上

Python 需要版本2.7以及以上

docker的引擎为1.1.0以及以上

Harbor 安装:安装:

http://harbor.orientsoft.cn/,该网站为四川欧润特科技公司提供的镜像站,版本很齐全。

本次安装选择的为 harbor.1.2.0,下载的文件为tgz格式文件,解压在root目录下即可。

在正式安装前,需要配置解压后的目录下的harbor.cfg 文件,该文件中需要修改的项目为:

hostname = hub.test.com(这里,根据自己的喜好写域名,我这为了后面的实验这么写的)

ui_url_protocol = https#默认为http,更改为https,启用443端口,证书加密

db_password = root123 #默认密码为root123,可更改为自己记得住的密码

max_job_workers:(默认值为:(默认值为3)作业服务中的复制工作人员的最大数量。对于每个映像复制作业,)作业服务中的复制工作人员的最大数量。对于每个映像复制作业,工作人员将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工工作人员将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工作人员都会消耗一定数量的网络作人员都会消耗一定数量的网络/ CPU / IO资源,请根据主机的硬件资源,仔细选择该属性的值资源,请根据主机的硬件资源,仔细选择该属性的值 customize_crt:(:(on或或off。默认为。默认为on)当此属性打开时,)当此属性打开时,prepare脚本将为注册表的令牌的生成脚本将为注册表的令牌的生成/验证创验证创建私钥和根证书建私钥和根证书ssl_cert::SSL证书的路径,仅当协议设置为证书的路径,仅当协议设置为https时才应用时才应用ssl_cert_key::SSL**的路径,仅当协议设置为**的路径,仅当协议设置为https时才应用时才应用

ssl_cert = /data/cert/server.crt ssl_cert_key = /data/cert/server.key

secretkey_path = /data #这三项是安全证书存放的位置,如果没有特殊需求,不用更改

harbor_admin_password = 123456 #这一项是登录项目时的admin用户的初始密码,后期可在项目内自行更改。

指定镜像仓库地址

vim /etc/docker/daemon.json

{ "insecure-registries": ["现在你安装的这台机器的IP"]

创建HTTPS证书以及配置证书目录权限

openssl genrsa -des3 -out server.key 2048

#生成证书的密码,会提示输入密码,按要求输入即可

openssl req -new -key server.key -out server.csr

harbor仓库的构建及简单使用

#提交生成证书的请求,这里步骤比较多,国家CN,省份任意,

#机构名称任意,域名这里需要注意些harbor.cfg文件内的域名 hub.test.com

cp server.key server.key.org

#清除前面生成的密码

openssl rsa -in server.key.org -out server.key

#指定证书加密方式,上面那一步清除密码了,所以指定一下

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

#设定证书使用时间

会在当前工作目录生成四个文件,将这几个文件移动到/data/cert/目录下

harbor仓库的构建及简单使用

mkdir -p /data/cert

mv server.* /data/cert/

chmod -R 777 /data/cert

运行脚本安装,将解压的文件移动到 /usr/local/目录下,进入该目录执行脚本:

./install.sh

#多说一句,在执行安装脚本前,最好检查下是否有其他的web程序,比如httpd。tomcat是否在运行,如果是在运行并且

#使用的是默认端口,请关闭这些软件,NGINX与这些程序是有冲突的。

该命令执行时间比较长,首先会检测安装环境,环境通过后,下载项目所需的镜像,并运行这些镜像。所以比较耗时。

执行完毕安装脚本后,在hosts文件内写入域名解析记录:

192.168.0.x hub.test.com

浏览器输入 hub.test.com 即可打开该项目愉快的使用了。

客户端的说明:当然需要安装docker了。版本最好和服务器保持一致。

vim /etc/docker/daemon.json

{ "insecure-registries": ["你的服务器的IP"]

==================================================================================

使用方法:

使用admin 登录项目,初始密码在harbor.cfg文件内的那个设置。

新建用户并设置该用户密码,新建一个项目,项目名称假设为test,并设置为私有

docker login hub.test.com

输入刚才新建的用户名称和用户密码登录。

docker tag 需要上传的镜像名字[:镜像的版本号] hub.test.com/test/新的镜像名字[:新的镜像的版本号]

#这一步是重新更改标签,镜像并没有改变,只是等于一个链接,链接到原镜像

docker push hub.test.com/test/新镜像名字[:镜像的版本号]。

假设要上传的镜像名称和版本号为:tomcat:v1.0.要推送到harbor的test项目内,

 

docker login hub.test.com

输入新建的用户名和密码

docker tag tomcat:v1.0 hub.test.com/test/tomcat:v1.0

docker push hub.test.com/test/tomcat:v1.0

这样就完成了镜像的上传操作,下载操作在Hasbro的项目内点击镜像,会自动生成一个pull命令,复制执行即可,在此,不在赘述。