什么是 harbor ?

Harbor 是一个开源、可信、云原生的镜像仓库项目,用于存储,签名和扫描内容。
Harbor 通过添加用户通常需要的功能(如安全性,身份验证和管理)来扩展开源 Docker 镜像分发工具(如 Docker registry )。
Harbor 使 registry 更接近构建和运行环境,并且可以提高镜像传输效率。
Harbor 支持在 registry 之间复制映像,还提供高级安全功能,如用户管理,访问控制和活动审计。
特征
- 基于角色的访问控制:用户和存储库通过“项目”进行组织,用户可以对项目下的镜像赋予不同的权限。
- 基于策略的镜像复制:可以在多个 registry 实例之间复制(同步)映像,并自动重试错误。非常适合负载平衡,高可用性,多数据中心,混合和多云场景。
- 漏洞扫描: Harbor 定期扫描镜像并警告用户漏洞。
- LDAP / AD 支持:Harbor 与现有企业 LDAP / AD 集成,用于用户身份验证和管理。
- 镜像删除和垃圾收集:可以删除镜像,并可以回收它们的空间。
- 公证:可以确保图像的真实性。
- 图形化界面:用户可以轻松浏览,搜索存储库和管理项目。
- 审计:跟踪存储库的所有操作。
- RESTful API :适用于大多数管理操作的 RESTful API ,易于与外部系统集成。
- 易于部署:提供在线和离线安装程序。
- 支持 Helm 包管理
部署 & 运行
环境要求:
目前只支持在 Linux 操作系统下部署, 安装最新版本的 docker 及 docker-compose ,最低版本要求如下:
1 | Docker engine: Version 17.06.0-ce+ or higher |
同时需要开放如下端口:
1 | 80: HTTP |
开始部署
- 下载离线安装程序
下载地址: https://github.com/vmware/harbor/releases
选择: harbor-offline-installer-
- 压安装包
1 | # tar -xf harbor-offline-installer- |
- 配置 Harbor
配置文件模板为: harbor.yml.tmpl
复制模板文件,并命名为 harbor.yml
在 harbor.yml
中有两类参数:必需参数和可选参数。
- 必选参数:需要在配置文件中设置这些参数。如果用户在
harbor.yml
中更新它们并运行install.sh
脚本以重新安装 Harbor ,它们将生效。 - 可选参数:这些参数对于更新是可选的,即用户可以将它们保留为默认值,并在启动 Harbour 后在 Web UI 上更新它们。如果它们设置在
harbor.yml
中,它们只会在第一次启动 Harbour 时生效。后续在 Web UI 中的更新将忽略harbor.yml
中这些参数。
在这里,我只列出部分必选参数的配置,具体参数说明见文章末尾处给出的官方安装文档连接
- 必选参数:
hostname
: 访问 harbor 的域名,可以使用主机 IP ,但建议使用域名
hostname = reg.atompi.com
http / https
: 访问 harbor 的 url 协议,若只使用http
,则注释掉https
项即可(如下),若启用https
请参考 Configuring Harbor with HTTPS Access
1 | # http related config |
harbor_admin_password
: 超级管理员用户admin
的登录密码database.password
: 数据库 root 用户密码,用于指定 Harbor 默认数据库 root 用户密码,生产环境建议修改这个值为复杂密码
1 | database: |
data_volume
: 由于 Harbor 所有组件都使用 docker 容器化部署,所以需要将容器数据持久化到宿主机目录,该配置项就是指定持久化目录的挂载点,建议在某目录下创建harbor
文件夹,并作为挂载点,便于统一管理和迁移。
1 | data_volume: /data/harbor |
执行 install.sh 开始安装
默认情况下,不带任何参数的 install.sh
脚本只安装 Harbor 主服务,如果需要安装其他附加服务,可带指定参数安装,可安装的附加服务有:
1 | Harbor with Notary ( --with-notary ):一个允许任何人信任任意数据集合的项目,用于运行和与可信集合交互。 |
这里我们安装带 Helm 包管理的 Harbor
1 | sudo ./install.sh --with-chartmuseum |
登录 harbor 并配置 Docker “insecure-registries”
Web UI 地址:
http://reg.atompi.com
docker login
修改 docker daemon 配置文件 /etc/docker/daemon.json
,添加如下配置项:
1 | { |
docker 登录 registry
1 | # docker login reg.atompi.com |