作者:掩不住的心 | 来源:互联网 | 2023-08-30 13:52
【Docker】Harbor入门与安装-1Harbor的概述Harbor是一个开放源代码的受信任云原生注册表项目,用于存储,签名和扫描内容。Harbor通过添加用户通常需要的功能
1 Harbor的概述
Harbor是一个开放源代码的受信任云原生注册表项目,用于存储,签名和扫描内容。Harbor通过添加用户通常需要的功能(例如安全性,身份和管理)扩展了开源Docker Distribution。使注册表更接近于构建和运行环境可以提高镜像传输效率。Harbor支持在注册表之间复制镜像,还提供高级安全功能,例如用户管理,访问控制和活动审核。
2 Harbor的特点
- 云原生注册表:Harbor支持容器镜像和Helm图表,可作为容器原生运行时和编排平台之类的云原生环境的注册表。
- 基于角色的访问控制:用户通过项目访问不同的存储库,并且用户可以对项目下的降序或Helm图表具有不同的权限。
- 基于策略的复制:可以使用过滤器(存储库,标签和标签)基于策略在多个注册表实例之间复制(同步)镜像和图表。如果遇到任何错误,Harbor会自动重试复制。这可用于协助负载平衡,实现高可用性并促进混合和多云场景中的多数据中心部署。
- 漏洞扫描:Harbor会定期扫描映像中的漏洞,并进行策略检查以防止部署易受攻击的映像。
- LDAP / AD支持:Harbor与现有企业LDAP / AD集成以进行用户身份验证和管理,并支持将LDAP组导入Harbor,然后可以将其授予特定项目的权限。
- OIDC支持:Harbor利用OpenID Connect(OIDC)来验证由外部授权服务器或身份提供者认证的用户的身份。可以启用单点登录以登录Harbor门户。
- 镜像删除和垃圾收集:系统管理员可以运行垃圾收集作业,以便可以删除镜像(悬挂的清单和未引用的Blob),并可以定期释放其空间。
- 公证:使用Docker Content Trust(利用公证)支持对容器映像进行签名,以确保真实性和出处。此外,还可以激活防止部署未签名映像的策略。
- 图形界面接口:用户可以轻松浏览,搜索存储库和管理项目。
- 审核:通过日志跟踪对存储库的所有操作。
- RESTful API:提供RESTful API有助于管理操作,并且易于与外部系统集成。嵌入式Swagger UI可用于探索和测试API。
- 易于部署:可以通过Docker compose和Helm Chart部署Harbor,并且最近还添加了Harbor Operator。
3 Harbor的架构设计
Harbor利用nginx的代理,通过代理访问Registry和核心服务,进而访问到数据库和作业服务,作业服务主要是做镜像复制。核心服务里的webhook主要做用户认证和一些回调的工作。Registery负责存储docker镜像,处理上传和下载命令,用户的docker pull/push请求需要携带合法的token。数据库中会存储用户权限、审计日志、镜像分组信息等数据。Log控制器监控Harbor的运行,收集子组件的日志。
4 Harbor高可用部署
4.1 双主复制方案
HarborA中的项目会同步复制到HarborB,HarborB的也会复制到HarborB,Nginx做负载均衡,可以请求到HarborA和HarborB,无论是HarborA停运还是HarborB停运,另外一个节点都可以提供服务。
4.2 环境准备
准备三个节点
节点 | IP地址 |
---|
Master1 | 192.168.3.183 |
Worker1 | 192.168.3.182 |
Worker2 | 192.168.3.181 |
安装harbor
注意docker和harbor版本的匹配问题
- 下载harbor的压缩包,解压缩:
tar -xvf harbor-offline-installer-v1.6.0.tgz
- 修改harbor.cfg文件中的hostname为ip地址
- 安装harbor:
sh install.sh
。报错:✖ Need to install docker-compose(1.7.1+) by yourself first and run this script again.
- 安装docker-compose
[root@jxd-worker2 harbor]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
[root@jxd-worker2 harbor]# chmod +x /usr/local/bin/docker-compose [root@jxd-worker2 harbor]# docker-compose --version
docker-compose version 1.22.0, build f46880fe
- 重新安装harbor,报错:80端口被占用。解决方法
参考文献
Harbor的Github仓库