Harbor 容器镜像仓库
bash docker --version docker compose version # 或 docker-compose --version
## 环境准备
### 开放必要端口
Harbor 默认使用以下端口,请确保防火墙或安全组允许访问:
- 80(HTTP)
- 443(HTTPS,推荐)
- 4443(Harbor 管理服务)
如果你的服务器有防火墙,可以按以下示例开放端口(以 Ubuntu 的 ufw 为例):
```bash
sudo ufw allow 80,443,4443/tcp
创建安装目录
我们将 Harbor 的所有文件放在 /opt/harbor 目录下:
sudo mkdir -p /opt/harbor
cd /opt/harbor
安装 Harbor
本文以 Harbor v2.11.5 离线安装包为例,实际安装时请前往官方 Release 页面获取最新版本。
下载离线安装包
# 下载离线包(约 800MB)
wget https://github.com/goharbor/harbor/releases/download/v2.11.5/harbor-offline-installer-v2.11.5.tgz
# 解压
tar xzvf harbor-offline-installer-v2.11.5.tgz
cd harbor
配置 harbor.yml
安装包解压后会生成一个配置文件模板 harbor.yml.tmpl,复制为 harbor.yml 并编辑:
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
需要修改的关键参数如下:
# 服务器的主机名,填写你的服务器 IP 或域名
hostname: your-server-ip-or-domain
# HTTP/HTTPS 配置
http:
port: 80
# 如果你的服务器没有域名,可以暂时注释掉 https 部分
# https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
# Harbor 管理员初始密码(第一次登录后务必修改)
harbor_admin_password: Harbor12345
# 数据库密码(生产环境务必修改)
database:
password: root123
注意: 如果仅用于测试或内网环境,可以只配置 HTTP;生产环境强烈建议启用 HTTPS,并使用可信 SSL 证书。
运行安装脚本
保存配置后,在 harbor 目录下执行安装脚本:
sudo ./install.sh
安装过程会自动拉取并启动以下服务容器:
- Harbor Portal(Web 管理界面)
- Core Service(核心 API)
- Registry(镜像存储)
- Database(PostgreSQL)
- Redis(缓存)
- Job Service(异步任务)
- Log Collector(日志收集器)
安装完成后,使用浏览器访问 http://your-server-ip ,会看到 Harbor 登录页面。
第一次登录
- 用户名:
admin - 密码:你在配置文件中设置的
harbor_admin_password(默认Harbor12345)
Harbor Web 界面导览
登录后,你会看到主要的导航菜单:
- 项目(Projects):镜像存储的基本隔离单元,可以设置公开或私有。
- 仓库(Repositories):项目内的具体镜像仓库,可以管理标签(tag)。
- 镜像扫描(Interrogation):对镜像进行漏洞扫描,查看安全报告。
- 复制管理(Replication):在不同 Harbor 实例或第三方仓库之间同步镜像。
- 机器人账户(Robot Accounts):为 CI/CD 流程创建自动化账户。
- 审计日志(Logs):记录所有操作,方便安全审计。
- 系统配置(Configuration):管理员全局设置,如认证方式、标签保留策略等。
创建项目与用户管理
在开始推送镜像之前,需要先创建项目,并根据需求添加用户或机器人账户。
创建用户
- 点击左侧 “用户管理” -> “创建用户”。
- 输入用户名(例如
developer)、邮箱、真实姓名、密码。 - 新创建的用户默认没有项目权限,需要管理员将用户添加到具体项目中。
创建项目
- 点击 “项目” -> “新建项目”。
- 填写 项目名称(如
my-app),访问级别选择 公开 或 私有。- 公开:任何人可以拉取,但推送需要权限。
- 私有:只有项目成员可以拉取或推送。
- 默认项目会启用镜像不可变功能(推送的 tag 不可覆盖),可在创建后调整。
- 创建后,进入项目 -> “成员”,将刚才创建的用户
developer添加为 项目管理员 或 开发者 角色。
推送与拉取镜像
配置 Docker 客户端信任 Harbor
如果 Harbor 使用的是自签名证书或仅 HTTP,Docker 需要额外配置。最简单的方法是在 Docker 守护进程配置文件中添加 insecure-registries。
编辑 /etc/docker/daemon.json(如果文件不存在则新建):
{
"insecure-registries": ["your-server-ip:80"]
}
重启 Docker:
sudo systemctl restart docker
生产级建议: 不要使用 insecure-registries,务必配置 HTTPS,并在 Docker 客户端正确导入 CA 证书。
登录 Harbor 仓库
在客户端机器上(或 Harbor 服务器本地),执行:
docker login your-server-ip:80
输入你在 Harbor 中创建的账号(例如 developer)及密码。
标记镜像并推送
假设你本地有一个名为 my-image:latest 的镜像,需要先打上符合 Harbor 仓库格式的标签:
docker tag my-image:latest your-server-ip:80/my-app/my-image:1.0.0
格式说明:仓库地址/项目名/镜像名:标签
然后推送:
docker push your-server-ip:80/my-app/my-image:1.0.0
推送成功后,刷新 Harbor 项目界面,即可在仓库列表中看到 my-app/my-image 及其标签 1.0.0。
从 Harbor 拉取镜像
任何有权限的用户都可以拉取公开项目或自己加入的私有项目的镜像:
docker pull your-server-ip:80/my-app/my-image:1.0.0