📦 Harbor企业级镜像仓库:安全与高效的镜像管理
💻 机器B中安装
Harbor简介
Harbor是一个开源的 企业级Docker镜像仓库,旨在提供高效、安全的镜像管理服务,支持对Docker镜像的存储、管理、镜像版本控制、权限控制、审计日志等功能。Harbor是由VMware提供的,可以运行在 Kubernetes集群中,也可以自托管在其他平台上。它在Docker Hub的基础上,加入了企业级的安全性、权限管理、审计等功能。
Harbor的主要功能特点:
-
高效的镜像管理:
✅ 支持
Docker镜像的上传、下载和存储,方便管理多个镜像版本。 ✅ 支持多仓库、多项目管理,用户可以根据需要在不同项目和仓库中管理镜像。 -
安全性和权限控制:
🔑 用户管理:通过
LDAP或内部身份验证,支持细粒度的访问控制。 🔒 角色管理:可以为不同的用户分配不同的角色和权限,确保安全。 🛡️ 镜像签名:Harbor集成了Notary,支持镜像签名和验证,确保镜像的安全性。 -
镜像扫描:
🕵️♂️ 集成了
Clair安全扫描工具,可以自动扫描镜像中的漏洞,并给出修复建议。 -
支持
Helm Charts:📦 除了支持
Docker镜像,Harbor还支持Helm Charts的存储和管理,适用于Kubernetes环境。 -
多种存储后端支持:
💾
Harbor支持多种后端存储选项,包括本地文件系统、NFS、S3和其他分布式存储服务。 -
高可用性(
HA)支持:🔄 支持集群部署,可以配置多个
Harbor实例,提高系统的可用性和负载均衡。 -
审计日志:
📝 审计日志功能可以记录所有操作,确保镜像的使用情况可以被追踪,符合企业安全要求。
-
界面友好:
👨💻
Harbor提供了一个基于Web的用户界面,用户可以通过浏览器进行镜像管理、权限设置等操作。
Harbor 的主要组件
- 🧠 Core(核心服务)
Core组件是Harbor的基础,它负责大部分的核心功能,包括用户管理、权限控制、任务调度等。所有其他组件都依赖于Core组件进行交互。
- 用户管理:提供用户注册、登录、身份验证(支持
LDAP集成)等功能。 - 项目管理:用户可以在
Harbor中创建多个项目,每个项目可以包含多个仓库。 - 权限管理:提供不同角色的权限管理功能,支持细粒度的权限控制。
- 📦 Registry (镜像仓库)
Registry是Harbor的核心存储组件,它用于存储Docker镜像。Registry组件是Harbor的镜像存储后端,支持对Docker镜像的CRUD(创建、读取、更新、删除)操作。
-
支持多个仓库:
一个
Harbor实例可以包含多个镜像仓库(Repository),每个仓库中可以存储多个镜像版本。 -
支持 Helm Charts:
除了
Docker镜像,Harbor还支持Helm Charts的存储和管理,适用于Kubernetes环境。 -
分层存储:
Registry采用分层存储,每个镜像由多个层组成,支持高效存储和下载。
- 🌐 UI (用户界面)
UI组件提供了一个友好的Web界面,用户可以通过浏览器访问并管理Harbor。
- 镜像管理:用户可以通过
UI查看、上传、下载镜像。 - 用户和角色管理:通过
UI可以管理用户、分配角色、设置权限。 - 项目和仓库管理:用户可以创建、删除项目,管理仓库。
- 安全扫描和审计日志:
UI提供了镜像安全扫描和审计日志查看功能,帮助用户更好地管理镜像安全。
- ⚙️ Job Service (任务服务)
Job Service组件负责处理异步任务,确保Harbor中的任务(如镜像扫描、数据迁移等)能够可靠地执行。
- 任务调度:
Job Service负责管理后台任务,例如镜像安全扫描、同步外部镜像仓库等。 - 状态管理:
Job Service会跟踪任务的状态,确保任务执行完毕,并在任务失败时发出警告。
- 🕵️♀️ Clair (镜像安全扫描)
Clair是一个用于扫描容器镜像中漏洞的工具。它集成在Harbor中,用于扫描镜像中的已知安全漏洞,帮助用户确保使用的镜像没有已知的安全风险。
- 漏洞扫描:
Clair会扫描镜像中的每个层,并将发现的漏洞与漏洞数据库对比,生成漏洞报告。 - 报告查看:用户可以通过
Harbor的UI查看镜像的安全报告,并根据报告中的建议采取措施。
- 📝 Notary (镜像签名)
Notary是Harbor的另一个重要安全组件,主要用于为镜像添加数字签名,以确保镜像的来源和完整性。Notary集成了Docker Content Trust(DCT),它允许用户对镜像进行签名和验证,确保镜像在传输过程中没有被篡改。
- 签名和验证:用户可以使用
Notary对镜像进行签名,确保镜像的完整性和可信性。 - 镜像的版本控制:支持多个镜像版本的签名,增强了对镜像版本的信任控制。
- 🔌 Portal (API 服务)
Portal组件提供了Harbor的RESTful API接口,方便用户和第三方系统进行集成。通过 API,用户可以自动化管理Harbor的各种功能,如镜像上传、仓库创建、用户管理等。
- RESTful API:提供完整的
API文档,支持镜像管理、用户管理、权限控制等功能。 - 集成与自动化:可以与
CI/CD工具(如Jenkins、GitLab)集成,实现自动化构建和部署。
- 📊 ChartMuseum (Helm Charts 存储)
ChartMuseum是Harbor集成的Helm Charts存储系统,支持存储和管理Kubernetes中使用的Helm Charts。
Helm Charts存储:可以将Helm Charts上传到Harbor中,方便在Kubernetes中使用。- 版本管理:支持
Helm Charts的版本管理,可以查看和回滚到特定版本的Chart。 - 集成
Kubernetes:Helm Charts存储功能与Kubernetes集成,简化了Helm Charts的管理和分发。
- ⚡ Redis (缓存和队列)
Redis组件用于Harbor中的缓存和队列管理。它优化了Harbor的性能,减少了数据库的负载。
- 缓存:缓存机制加快了数据访问速度。
- 队列管理:处理异步任务队列,确保任务能够高效排队和执行。
- 🗄️ Database (数据库) 数据库 组件是
Harbor存储所有配置信息、用户数据、镜像元数据等重要信息的地方。Harbor默认使用PostgreSQL作为数据库。
- 存储元数据:数据库存储镜像的元数据、用户信息、权限配置、项目等数据。
- 高可用配置:数据库可以与
Harbor配合配置为高可用环境,确保数据的持久性和可靠性。
Harbor安装
🔧 Harbor的安装可以通过Docker或Kubernetes两种方式进行。这里以Docker方式为例,演示如何在单机环境下搭建Harbor。
1. 系统要求
-
操作系统:
Linux系统(如Ubuntu、CentOS) -
Docker:Harbor依赖Docker来运行容器化应用,确保您的服务器上已安装Docker和Docker Compose。 -
Docker Compose:用于编排多个Docker容器。
2. 安装 Docker 和 Docker Compose(如果尚未安装)
-
安装
Docker:参考前面的安装方法。 -
安装
Docker Compose:
bash
sudo apt-get update
sudo apt-get install docker-compose
- 检查安装是否成功✅:
bash
docker --version
docker-compose --version
3. 安装 Harbor
可以从Harbor的GitHub或官方发布页面下载最新版本的Harbor。
- 下载
Harbor安装包
bash
# 进入您想下载 Harbor 的目录
wget https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz
- 解压安装包并进入目录
解压下载的文件:
bash
tar xvf harbor-offline-installer-v2.11.2.tgz
cd harbor
- 配置
Harbor
在 Harbor 解压后的目录中,有一个配置文件harbor.yml。需要根据实际情况修改配置文件中的一些参数。
编辑harbor.yml配置文件:
bash
vim harbor.yml
常见的配置项:
hostname:设置Harbor的访问域名,建议使用静态IP或域名。http / https配置:如果需要HTTPS配置,可以设置证书和私钥路径;如果使用HTTP协议,则可以跳过。
bash
hostname: <your-domain>
http:
port: 9200
https:
port: 443
certificate: /etc/docker/certs.d/<your-domain>_public.crt
private_key: /etc/docker/certs.d/<your-domain>.key
data_volume: /home/harbor/data
harbor_admin_password: xxx
jobservice:
# Maximum number of job workers in job service
max_job_workers: 10
notification:
# Maximum retry count for webhook job
webhook_job_max_retry: 10
log:
# options are debug, info, warning, error, fatal
level: info
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
chart:
# Change the value of absolute_url to enabled can enable absolute url in chart
absolute_url: disabled
# Log configurations
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
# The directory on your host that store log
location: /var/log/harbor
💡 强调, 这一步很重要:证书可以到云服务提供商创建一个,放到
/etc/docker/certs.d下面;
数据库配置:如果使用外部数据库,可以修改相关配置。 保存文件并退出。
- 安装
Harbor
在Harbor解压后的目录中,执行以下命令安装Harbor。
bash
sudo ./install.sh
该命令会根据harbor.yml配置文件启动Docker容器,拉取相关镜像并启动Harbor服务。
- 启动
Harbor
安装完成后,Harbor会自动启动。如果需要手动启动,可以运行:
bash
sudo docker-compose up -d
- 停止
Harbor
如果需要停止Harbor,使用以下命令:
bash
sudo docker-compose down -v
Harbor使用
- 访问
Harbor Web界面
打开浏览器,访问 https://<your-domain>(即配置文件中设置的hostname地址)。使用默认用户名 admin 和密码(harbor.yaml文件中填的密码)
- 设置用户和权限
登录后,可以在Web界面中创建新的用户、设置仓库权限等。
- 创建项目
创建develop项目,后面jenkins构建镜像时,会将构建产物上传到harbor develop中,然后Kubectl会从harbor develop中拉取镜像。

Jenkins中添加Harbor凭证
