部署Harbor镜像仓库:详尽指南
什么是Harbor?
Harbor是一个企业级的Docker镜像仓库,通过为镜像管理提供基于角色的访问控制、镜像复制策略、漏洞扫描和镜像签名等功能,来增强用户对镜像的管理和安全控制。Harbor旨在帮助企业用户更好地管理其镜像库,并提供高效、安全的镜像存储和分发服务。
Harbor的特性
- 基于角色的访问控制:提供细粒度的用户权限管理,确保只有授权用户才能访问特定的镜像。
- 镜像复制策略:支持在多个Harbor实例之间复制镜像,确保在多个数据中心之间的一致性。
- 漏洞扫描:集成了Clair漏洞扫描工具,自动扫描并报告镜像中的安全漏洞。
- 镜像签名:支持Notary镜像签名,确保镜像的真实性和完整性。
- 多租户支持:通过项目(Project)的方式,支持多租户使用。
- 审计日志:记录所有用户操作,便于追踪和审计。
Harbor的构成
Harbor主要由以下几个组件构成:
- Harbor核心(Core):负责处理各种核心功能,如用户管理、项目管理、镜像管理等。
- 数据库(Database):存储Harbor的配置信息和元数据。
- 镜像仓库(Registry):用于存储Docker镜像。
- 镜像复制控制器(Registry Controller):负责镜像复制任务。
- 日志服务(Log):收集并存储日志信息。
- 门户(Portal):提供Web UI,用于用户操作和管理。
- Redis:缓存服务,提高系统性能。
- Jobservice:处理异步任务,如镜像复制、扫描等。
部署Harbor的步骤
安装Docker和Docker Compose
首先,安装Docker和Docker Compose工具。这里假设你已经安装了Docker。如果没有,可以参考Docker官方文档进行安装。
下载并安装Docker Compose:
# 下载Docker Compose二进制文件
wget https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-linux-x86_64
# 移动文件到系统目录
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
# 赋予执行权限
chmod +x /usr/bin/docker-compose
# 检查Docker Compose版本
docker-compose -v
# Docker Compose version v2.29.1
下载并解压Harbor安装包
# 下载Harbor安装包
wget https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-online-installer-v2.10.3.tgz
# 解压安装包
tar xzvf harbor-online-installer-v2.10.3.tgz
# 进入Harbor目录
cd harbor/
配置Harbor
复制配置模板并进行编辑:
# 复制配置文件模板
cp harbor.yml.tmpl harbor.yml
# 编辑配置文件
vi harbor.yml
根据实际需求修改配置文件,以下是一个示例配置:
# Harbor的配置文件
# 设置访问Harbor UI和注册服务的主机名或IP地址
hostname: 10.0.0.194
# HTTP相关配置
http:
port: 80
# 如果不使用HTTPS,可以注释以下配置
#https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
# Harbor管理员密码
harbor_admin_password: 12345
# 数据库配置
database:
...
加载镜像和启动Harbor
准备环境并启动Harbor:
# 准备环境
bash prepare
# 安装并启动Harbor
bash install.sh
验证安装
检查Harbor的容器状态,确保所有容器都已成功启动:
# 检查容器状态
docker-compose ps
# 预期输出(示例):
# NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
# harbor-core goharbor/harbor-core:v2.10.3 "/harbor/entrypoint.…" core About a minute ago Up About a minute (healthy)
# harbor-db goharbor/harbor-db:v2.10.3 "/docker-entrypoint.…" postgresql About a minute ago Up About a minute (healthy)
# harbor-jobservice goharbor/harbor-jobservice:v2.10.3 "/harbor/entrypoint.…" jobservice About a minute ago Up About a minute (healthy)
# harbor-log goharbor/harbor-log:v2.10.3 "/bin/sh -c /usr/loc…" log About a minute ago Up About a minute (healthy) 127.0.0.1:1514->10514/tcp
# harbor-portal goharbor/harbor-portal:v2.10.3 "nginx -g 'daemon of…" portal About a minute ago Up About a minute (healthy)
# nginx goharbor/nginx-photon:v2.10.3 "nginx -g 'daemon of…" proxy About a minute ago Up About a minute (healthy) 0.0.0.0:80->8080/tcp, :::80->8080/tcp
# redis goharbor/redis-photon:v2.10.3 "redis-server /etc/r…" redis About a minute ago Up About a minute (healthy)
# registry goharbor/registry-photon:v2.10.3 "/home/harbor/entryp…" registry About a minute ago Up About a minute (healthy)
# registryctl goharbor/harbor-registryctl:v2.10.3 "/home/harbor/start.…" registryctl About a minute ago Up About a minute (healthy)
登陆仓库10.0.0.194访问
总结
通过上述步骤,你可以成功部署一个功能强大的Harbor镜像仓库,满足企业级的镜像管理需求。Harbor不仅提供了全面的功能,还通过其丰富的特性确保镜像的安全性和管理的便利性。希望这篇指南对你部署Harbor有所帮助!