Docker--harbor私有仓库部署与管理

发布于:2024-05-09 ⋅ 阅读:(25) ⋅ 点赞:(0)

Harbor

Harbor是一个开源的项目,用于存储和分发Docker镜像的企业级Registry。它是由VMware中国研发团队发起的,并在GitHub上进行了开源。Harbor提供了权限管理、安全审计、用户管理、镜像复制等功能,用于帮助用户更好地管理和保护他们的Docker镜像。

Harbor的特性与功能

  1. 基于角色控制:Harbor允许管理员创建用户,并将用户分配到不同的项目中,每个用户可以在项目中拥有不同的角色和权限,如开发者、维护者或项目管理员等。
  2. 基于镜像的复制策略:Harbor支持在多个Harbor实例之间同步镜像,这对于实现镜像的高可用性、灾备和负载均衡非常有用。
  3. 支持 LDAP/AD:Harbor可以与企业现有的LDAP(轻量级目录访问协议)或AD(活动目录)系统集成,使得企业用户能够使用已有的凭据登录Harbor。
  4. 镜像删除和垃圾回收:Harbor允许用户删除不再需要的镜像,并提供了垃圾回收功能,可以清理存储中的孤儿镜像层,释放空间。
  5. 图形化用户界面:Harbor提供了一个直观的Web界面,用户可以通过浏览器来管理项目、浏览和搜索镜像仓库等。
  6. 审计管理:Harbor记录了所有对镜像仓库的操作日志,包括镜像的推送、拉取、删除等,这些日志可以用于审计和追踪。
  7. 支持 RESTful API:Harbor提供了RESTful API,允许管理员通过API进行自动化操作和管理,便于与其他管理工具集成。
  8. Harbor和docker registry的关系:Harbor是基于Docker Distribution(也称为Docker Registry)构建的,它提供了额外的企业级功能,如用户管理、镜像复制、审计等,而Docker Registry是Docker官方提供的用于存储和分发Docker镜像的底层数据存储服务。

Harbor的构成

Harbor由大致六个组件构成
1.Proxy:用来转发数据流量,将数据请求转发给后端服务进行处理

2.Core Services 是Harbor的一个关键组件,它包括多个子服务,
UI用户界面:
提供了一个图形化的管理界面,使得管理员可以通过Web浏览器来管理Harbor的配置和资源。这个界面展示了项目、镜像、用户和日志等信息,使得操作直观且易于理解。
token Service
负责根据用户的权限生成和验证安全令牌。当用户尝试登录或执行操作(如拉取或推送镜像)时,Token Service会检查用户的凭据,并生成一个令牌(通常是一个JWT),这个令牌随后会被用来验证用户对特定资源的访问权限。
Webhook
允许Harbor与其他系统进行集成。当Registry上的镜像状态发生变化(如新的镜像被推送到仓库)时,Webhook可以触发自定义的操作,比如发送通知、更新外部系统的状态或者执行自动化脚本。这些操作可以帮助UI界面或其他系统实时更新镜像的信息。
总结来说,Core Services是Harbor的大脑,它不仅提供了一个用户友好的管理界面,还处理用户的认证和授权,以及管理镜像状态的实时更新。这些服务共同工作,确保了Harbor的安全性和易用性,同时也为管理员提供了一个强大的工具来监控和管理他们的容器镜像。

3.Registry: 负责储存Docker镜像,并根据Core services中的token给予的令牌来验证用户的权限根据权限与用户请求处来理docker pull 和docker push等命令,
4.Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker 镜像分组信息等数据。
5.Job services:主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上
6.Log collector: 负责收集其他组件的日志到一个地方。

Harbor 的工作流程

当Harbor收到Docker客户端用docker login [harbor-url]登录后 数据流量首先是到达proxy,proxy将数据转发到core services组件。core services组件根据用户权限生成一个身份令牌并将身份令牌返回给客户端,当用户使用docker pull 和docker puse 命令时 ,数据流量先到proxy,由proxy转发给Registry,Registry将更具令牌来确认用户的权限,并且执行符合用户权限内的命令。每次执行上传和下载命令时Core services都会将日志记录到Database组件中。
在这里插入图片描述

Harbor的部署

Harbor的安装需要依靠于Docker和Docker-Compose
则第一步需要安装Docker-Compose

cd /opt
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

在这里插入图片描述

下载或上传 Harbor 安装程序

wget https://github.com/goharbor/harbor/releases/download/v2.10.2/harbor-offline-installer-v2.10.2.tgz
tar xfv harbor-offline-installer-v2.10.2.tgz

在这里插入图片描述
因为在这无法连接github所以选择本地的包上传
这里使用2.10.2版本的harbor
在这里插入图片描述

cd harbor/
cp harbor.yml.tmpl harbor.yml

修改harbor安装的配置文件harbor.yml。
如果是老版本配置文件为harbor.cfg

vim harbor.yml
#第5行修改IP地址
#第37行修改admin初始密码

在这里插入图片描述
在harbor目录执行./prepare命令

./prepare

在这里插入图片描述
如果出现一下报错需要关闭https如下图
在这里插入图片描述
注释掉13、15、17、18行或者 在17添加SSL证书路径 、18行添加SSL密钥
在这里插入图片描述
在这里插入图片描述
继续执行./install.sh

./install.sh

在这里插入图片描述
安装完成,访问192.168.20.60
在这里插入图片描述
输入账户密码进行登录
用户admin
密码Harbor12345