在 CentOS 7.4 中安全搭建 HTTPS 私有 Docker Registry Harbor
2023-11-07 13:31:00
利用 Harbor 构建企业级容器镜像仓库
一、Harbor 简介
Harbor 是一款专为企业级场景打造的容器镜像仓库。它能帮助你安全、高效地存储、管理和分发 Docker 镜像。Harbor 的功能相当强大,包括:
- 支持私有和公共镜像仓库
- 提供镜像认证和授权
- 实现镜像签名和验证
- 提供镜像复制和同步
- 提供镜像漏洞扫描
- 支持镜像生命周期管理
二、搭建 Harbor
在开始搭建 Harbor 之前,需要准备以下资源:
- 一台 CentOS 7.4 服务器
- 一个域名或 IP 地址
- 一个 SSL 证书
- 一个 PostgreSQL 数据库
- 一个 Redis 数据库
1. 安装 Docker
首先,安装 Docker:
yum install -y docker
systemctl start docker
2. 安装 Harbor
接下来,安装 Harbor:
curl -L https://github.com/goharbor/harbor/releases/download/v2.1.2/harbor-online-installer-v2.1.2.tar.gz | tar -xzvf -
cd harbor
./install.sh
3. 配置 Harbor
接着,配置 Harbor:
vi /etc/harbor/harbor.cfg
修改配置项,替换为你自己的值:
hostname = <你的域名或 IP 地址>
https_port = 443
clair_db_host = <你的 PostgreSQL 数据库服务器地址>
clair_db_port = 5432
clair_db_user = <你的 PostgreSQL 数据库用户名>
clair_db_password = <你的 PostgreSQL 数据库密码>
clair_db_name = <你的 PostgreSQL 数据库名>
redis_host = <你的 Redis 数据库服务器地址>
redis_port = 6379
4. 启动 Harbor
配置完成后,启动 Harbor:
systemctl start harbor
5. 访问 Harbor
使用浏览器访问 Harbor 的 Web 界面:
https://<你的域名或 IP 地址>
三、创建私有仓库
登录 Harbor Web 界面后,创建私有仓库:
- 点击「仓库」选项卡
- 点击「创建仓库」按钮
- 选择「私有仓库」
- 输入仓库名和其他信息
- 点击「创建」按钮
四、推送到私有仓库
将镜像推送到私有仓库:
- 登录 Docker Hub
- 找到要推送的镜像
- 复制镜像标签
- 在 Harbor Web 界面中,点击「推送镜像」按钮
- 粘贴镜像标签
- 点击「推送」按钮
五、从私有仓库拉取
从私有仓库拉取镜像:
- 登录 Docker Hub
- 找到要拉取的镜像
- 复制镜像标签
- 在命令行中,运行:
docker pull <你的镜像标签>
六、安全认证
Harbor 支持 HTTPS 安全认证。为启用 HTTPS,你需要安装一个 SSL 证书。
1. 生成自签名 SSL 证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/harbor/harbor.key -out /etc/harbor/harbor.crt
2. 修改 Harbor 配置文件
vi /etc/harbor/harbor.cfg
修改配置项:
https_certificate = /etc/harbor/harbor.crt
https_private_key = /etc/harbor/harbor.key
3. 重启 Harbor
systemctl restart harbor
七、常见问题解答
1. 如何重置 Harbor 密码?
harbor-admin reset-password <用户名>
2. 如何配置镜像扫描?
参考 Harbor 文档中的 镜像扫描配置指南。
3. 如何使用 Harbor CLI?
参考 Harbor 文档中的 CLI 文档。
4. Harbor 中的角色和权限是如何工作的?
Harbor 使用角色和权限来控制对仓库和项目的访问。参考 Harbor 文档中的 权限管理指南。
5. Harbor 存储镜像的数据在何处?
Harbor 使用对象存储来存储镜像数据。默认情况下,使用的是本地文件系统。你也可以配置 Harbor 使用外部对象存储,如 Amazon S3 或 Google Cloud Storage。