Harbor 功能强大的企业级私有仓库
最近在用jenkins+docker做spring项目的自动化构建及发布,之前直接用docker-registry起镜像仓库,但是用起来感觉不是很方便,查看、删除操作都不方便,也没有日志管理,所以搭建了harbor来做私有仓库,主要它还支持k8s
Harbor是由VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能
作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等
Harbor在架构上主要由五个组件构成:
Proxy:
Harbor的registry、UI、token等服务,通过一个前置的 反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务
Registry:
负责存储Docker镜像,并处理docker pull/push命令。另外有对用户进行访问控制,即不同用户 对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token,Registry会通过公钥对token进行解密验证
Core services:
Harbor的核心功能,主要提供以下服务:
a、UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权
b、webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块
c、token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求
Database:
为core services提供数据库服务,负责存储用户权限、审计日志、Docker image分组信息等
Log collector:
日志收集、监控Harbor运行,日志记录
ok,下面进行环境配置及安装使用介绍
项目地址:https://github.com/goharbor/harbor
环境:CentOS7.x
首先需要先安装docker
卸载原有的docker
yum remove docker
安装docker-ce需要的依赖
yum -y install yum-utils device-mapper-persistent-data lvm2
添加docker-ce官方源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
如果慢的话用阿里源替代
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker-ce
yum install docker-ce
安装完后,修改docker镜像源,在/etc下新建目录docker,在目录下新建daemon.json文件,写入一下内容
这里是网易的源,也可以用其他的国内源
之后重启docker服务,systemctl restart docker
设置docker开机自启动 systemctl enable docker
安装docker-compose
直接通过yum安装是1.18版本的,这里从git上下载新版本的
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
完成后就可以使用了,查看版本
准备工作完成后,开始安装harbor
直接从git上下载编译好的包
这里有两个包Harbor offline installer 和 Harbor online installer,两者的区别是Harbor offline installer里面包含了Harbor需要使用的镜像文件
这里直接下载offline包
wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz
下载完成后解压
tar -zxvf harbor-offline-installer-v1.9.1.tgz
解压后,可以看到目录下有镜像包
编辑harbor.yml,修改配置
主要得几个配置点hostanem,这里要配置一个公网的域名或者公网IP,如果你是内网做私有仓库,那你可以用内网域名,主要就是可以让在别的地方访问
另外端口这里随意,看自己,存储目录也根据自己的存储目录修改
修改完配置文件后,执行install.sh,做一些基础配置,及导入本地的harbor需要的镜像
查看导入的镜像
安装完成后,执行prepare文件,做一些初始化操作,并启动harbor
查看启动的容器
安装完成后,用刚才配置的访问地址访问
默认有个公开的项目,library,我们创建一个自己的私有项目
创建好项目之后,我们创建我们的用户,当然直接用管理员用户也可以直接登陆现在创建好的私有仓库,并将创建好的用户添加到刚才的私有 项目中
创建完成后,我们在其他服务器测试登陆仓库
登陆之后,我们传一个镜像看看,如果不知道如何打tag,如何上传,可以在项目中查看,有命令,直接复制
我们打个tag,上传镜像
完成后,我们在harbor中查看我们上传的镜像
镜像详细信息
harbor除了以上最基本的仓库及镜像管理功能,还有更牛的仓库管理功能,可以方便的从其他共有或私有仓库同步镜像到harbor
同步的时候,可以通过push的方式同步到远端,也可以通过pull的方式同步到本地,也支持定时任务清理垃圾镜像
除此之外,harbor还支持api管理
功能不要太强大
持续更新,欢迎扫码关注,敬请期待!
温馨提示
如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。