目录
1.Harbor是什么
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署企业内部的私有环境Registry是非常必要的,Harbor和docker中央仓库的关系,就类似于nexus和Maven中央仓库的关系,Harbor除了存储和分发镜像外还具有用户管理,项目管理,配置管理和日志查询,高可用部署等主要功能。
1.1 Harbor的优势
1、基于角色控制:有管理员与普通用户,可赋权普通用户,比如只能上传和下载,可根据项目来进行操作和管理
2、基于镜像的复制策略:也与权限相关,比如有只一些用户与组才能对此项目进行相对应的操作
3、支持 LDAP/AD:域控制,比如南京去下载北京harbor私有仓库的镜像,两端打上局域网的地址,连接在一块,数据信息的传输通过一条隧道,会通过两层加密,第一层为隧道加密,第二层为数据加密,安全可靠
4、图像删除和垃圾收集:即回收站机制
5、图形UI:具有统计功能,比如访问量与镜像下载热度
6、审计:日志,这里意义不大,主要还是借助于 ELK
7、RESTful API:定义 web 语言规范的格式,方便调用 Harbor 的接口,也便于二次开发
1.2 Harbor的核心组件
- Proxy(代理):Harbor的组件,如注册表,UI和令牌服务,均位于逆向代理之后。代理将来自浏览器和Docker客户端的请求转发到各种后端服务。
- Registry(image仓库):负责存储Docker Images和处理Docker pull/push命令。由于Harbor需要强制对imagess进行访问控制,Registry会将客户端引导到令牌服务,以获取每个pull或push请求的有效令牌。
- Core services(核心服务):Harbor核心职能,主要提供以下服务:
- UI:用于帮助用户管理Registry Webhook上的Images的图形用户界面:Webhook是在注册表中配置的一种机制,以便Registry中的Images状态更改可以填充到Harbor的Webhook端点。Harbor使用webhook更新日志,启动复制和其他一些功能。令牌服务:根据用户对项目的作用,负责为每个停靠点pull/push命令发出令牌。如果从Docker客户端发送的请求中没有令牌,则Registry将将请求重定向到令牌服务。数据库:数据库存储项目,用户,角色,复制策略和图像的元数据。
- Job services(工作服务):用于Images复制,本地映像可以复制(同步)到其他Harbor实例。
- Log collector(日志收集器):负责在单个地方收集其他模块的日志。
2.Harbor 部署与应用
2.1 安装Harbor
(1)下载或上传 Harbor 安装程序
Harbor的压缩包下载地址:https://github.com/goharbor/harbor/releases
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
(2)修改harbor安装的配置文件
vim /usr/local/harbor/harbor.cfg
修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.112.96
指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345
harbor_admin_password = Harbor12345
2.2 启动 Harbor
cd /usr/local/harbor/
在配置好了 harbor.cfg 之后,执行 ./prepare 命令,为 harbor 启动的容器生成一些必要的文件(环境)
再执行命令 ./install.sh 以 pull 镜像并启动容器
4. 查看 Harbor 启动镜像
cd /usr/local/harbor/
docker-compose ps
docker-compose up -d #启动
docker-compose stop #停止
docker-compose restart #重新启动
完成后,访问harbor主页
2.3 创建项目
输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮
填写项目名称为“myproject-kgc”,点击“确定”按钮,创建新项目
下载镜像进行测试,并根据项目名,修改标签
上传镜像到 Harbor
上传完成后,即可在网页上查看
3. 维护管理Harbor
3.1 创建 Harbor 用户
输入用户名等信息
添加项目成员
先写成员信息,并分配项目角色
项目成员添加成功