Harbor 私有镜像仓库
1 简介
Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution 的功能。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全性。
2 安装
2.1 系统要求
硬件要求
资源 | 最低配置 | 推荐配置 |
---|---|---|
CPU | 2 CPU | 4 CPU |
内存 | 4 GB | 8 GB |
磁盘 | 40 GB | 160 GB |
软件要求
软件 | 版本要求 | 说明 |
---|---|---|
Docker Engine | 20.10.10-ce 或更高版本 | 用于运行 Harbor 容器 |
Docker Compose | v1.18.0+ 或 docker compose v2 | 用于编排 Harbor 服务 |
OpenSSL | 最新版本 | 用于生成证书和密钥 |
网络端口
端口 | 协议 | 说明 |
---|---|---|
443 | HTTPS | Harbor 门户和核心 API 的 HTTPS 端口 |
4443 | HTTPS | Docker Content Trust 服务端口 |
80 | HTTP | Harbor 门户和核心 API 的 HTTP 端口 |
2.2 下载安装包
访问 Harbor 发布页面 下载安装包
有在线安装包(harbor-online-installer)和离线安装包(harbor-offline-installer),这里选择离线安装包,比较方便。
下载离线安装包:
1
wget https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz
解压安装包:
1
tar xzvf harbor-offline-installer-v2.12.2.tgz
2.3 配置 Harbor
进入解压后的目录:
1
cd harbor
复制配置文件模板:
1
cp harbor.yml.tmpl harbor.yml
生成 SSL 证书(如果使用 HTTPS):
1
2
3
4
5
6
7
8
9
10
11# 创建证书目录
mkdir -p certs
# 生成私钥
openssl genrsa -out certs/harbor.key 4096
# 生成证书签名请求(CSR)
openssl req -new -key certs/harbor.key -out certs/harbor.csr -subj "/C=CN/ST=State/L=City/O=Organization/CN=harbor.example.com"
# 生成自签名证书(有效期 365 天)
openssl x509 -req -days 365 -in certs/harbor.csr -signkey certs/harbor.key -out certs/harbor.crt修改
harbor.yml
配置文件:1
2
3
4
5
6
7
8
9
10hostname: harbor.example.com # 修改为你的域名
http:
port: 80
https:
port: 443
certificate: ./certs/harbor.crt # 证书路径
private_key: ./certs/harbor.key # 密钥路径
harbor_admin_password: Harbor12345 # 修改为你的管理员密码
⚠️ 注意:
- 如果是生产环境,建议使用正式的 SSL 证书,可以使用 Let’s Encrypt 等免费证书
- 使用自签名证书时,需要在客户端配置信任该证书
- 如果使用 Let’s Encrypt 证书,可以使用 certbot 工具获取证书:
1
2
3
4
5 # 安装 certbot
apt-get install certbot python3-certbot-nginx
# 获取证书
certbot certonly --standalone -d harbor.example.com
2.4 安装 Harbor
- 运行安装脚本:
1
bash install.sh
⚠️ 这里启动的服务可能和你本地的数据库服务冲突,可以先停止本地的服务,或者修改配置,直接引入已有的服务。
- 验证安装:
1
docker-compose ps
3 使用 Harbor
3.1 Shell 中使用
登录 Harbor:
1
2
3
4docker login harbor.example.com
# 输入用户名和密码
Username: admin
Password: Harbor12345推送镜像:
1
2
3
4
5# 标记镜像
docker tag nginx:latest harbor.example.com/library/nginx:latest
# 推送镜像
docker push harbor.example.com/library/nginx:latest
⚠️ 如果 push 时,出现
unknown blob
错误,需要在common/config/registry/config.yml
中配置http:
下面的relativeurls
为true
。
- 拉取镜像:
1
docker pull harbor.example.com/library/nginx:latest
3.2 浏览器中使用
访问 Harbor 门户:
1
http://harbor.example.com
登录 Harbor,输入用户名和密码:
1
2Username: admin
Password: Harbor12345点击新建
dockerhub
项目,把一些 docker hub 上的镜像导入到 Harbor 中:1
2
3docker pull nginx:latest
docker tag nginx:latest harbor.example.com/dockerhub/nginx:latest
docker push harbor.example.com/dockerhub/nginx:latest这样就方便在网络隔离的环境中,使用 Harbor 作为私有镜像仓库。
4 管理功能
Harbor 提供了丰富的管理功能,包括用户管理、项目管理、镜像管理等。
4.1 用户管理
- 用户创建和认证:支持本地用户创建、LDAP/AD集成和OIDC认证
- 角色分配:系统管理员、项目管理员、开发者和访客等多种预定义角色
- 权限管理:支持项目访问权限设置、私有项目和公开项目、项目配额限制
4.2 项目管理
- 项目类型:私有项目和公开项目
- 访问控制:项目访问级别设置、项目级别用户权限管理、项目配额配置
- 项目配额:存储空间限制、镜像数量限制、配额预警通知
4.3 镜像管理
- 镜像复制:跨项目、跨实例复制,定时复制策略和失败重试机制
- 镜像清理:基于标签、时间和数量的清理,清理策略设置
- 漏洞扫描:多种扫描器支持,定时扫描、扫描结果通知和漏洞级别阈值设置
这些功能让 Harbor 成为一个企业级的镜像管理平台。