查看原文
其他

Harbor 功能强大的企业级私有仓库

运维菜鸟 运维研习社 2022-11-05


最近在用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管理

功能不要太强大


持续更新,欢迎扫码关注,敬请期待!


扫描二维码关注我们吧



温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存