Harbor 使用
Harbor 使用
1. 安装Harbor
此处使用官方离线安装包
1. 下载解压
1# 安装编译依赖
2# 安装 Docker
3sudo yum install -y yum-utils
4sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5sudo yum install -y docker-ce docker-ce-cli containerd.io
6sudo systemctl enable --now docker
7
8# 安装 Docker Compose 页面下载的话注意版本比如 验证系统架构uname -m输出x86_64
9sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
10sudo chmod +x /usr/local/bin/docker-compose
11
12# 下载Harbor并解压 (我用的离线安装包包含所有依赖镜像)
13wget https://github.com/goharbor/harbor/releases/download/v2.12.3/harbor-offline-installer-v2.12.3.tgz
14tar -xzvf harbor-offline-installer-v2.12.3.tgz
15cd harbor
2. 生成自签名证书(IP方式)
如果使用http则不需要设置
1sudo mkdir -p /etc/harbor/ssl
2sudo chmod 755 /etc/harbor/ssl
3sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
4-keyout /etc/harbor/ssl/your_ip.key \
5-out /etc/harbor/ssl/your_ip.crt \
6-subj "/CN=your_ip" -addext "subjectAltName=IP:your_ip"
验证权限
1sudo chmod 644 /etc/harbor/ssl/115.190.22.13.*
2sudo chown -R 10000:10000 /etc/harbor/ssl # Harbor容器用户需可读
3. 修改harbor.yml配置
1cp harbor.yml.tmpl harbor.yml
2vim harbor.yml
harbor.yml示例
# 基础配置
hostname: 公网IP # 例如 123.123.123.123
http:
port: 80 # HTTP 端口
falseenabled: false
https:
port: 443
certificate: /etc/harbor/ssl/your_ip.crt
private_key: /etc/harbor/ssl/your_ip.key
# 数据库和存储
database:
password: "Harbor12345"
data_volume: "/data" # 数据存储路径
# 管理员账户
harbor_admin_password: "Harbor12345" # 修改默认密码!
# 其他服务(按需启用)
chart:
absolute_url: disabled
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
4. 执行安装
1sudo ./install.sh
5. 防火墙配置
1sudo firewall-cmd --permanent --add-port=443/tcp
2sudo firewall-cmd --permanent --add-port=4443/tcp # Docker Registry端口
3sudo firewall-cmd --reload
6. 客户端配置
- 如果使用https 需要Docker 客户端信任自签名证书
bash # 将生成的 .crt 文件复制到 Docker 客户端 sudo mkdir -p /etc/docker/certs.d/您的公网IP:443 sudo scp /etc/harbor/ssl/your_ip.crt /etc/docker/certs.d/您的公网IP:443/ca.crt sudo systemctl restart docker - 如果使用http Docker 客户端取消 HTTPS 限制
1sudo tee /etc/docker/daemon.json <<-'EOF' 2{ 3"insecure-registries": ["你的IP:8080"] # 例如 "192.168.1.100:8080" 4} 5EOF 6 7# 重启 Docker 8sudo systemctl restart docker - 登录 Harbor
1docker login 您的公网IP -u admin -p Harbor12345
7. 验证安装
- 检查服务状态正常输出应显示所有服务为 Up 状态。
1docker-compose ps - 浏览器访问
- 访问 https://ip地址
- 用户名: admin,密码: YourSecurePassword123
- API测试应返回 {“message”:“pong”}。
1curl -vk https://替换自己IP/api/v2.0/ping
2. 维护命令
| 操作 | 命令 |
|---|---|
| 停止 Harbor | docker-compose down -v |
| 启动 Harbor | docker-compose up -d |
| 卸载 Harbor | sudo ./install.sh –uninstall |
| 备份数据 | tar -czvf harbor-backup.tar.gz /data |
- 这些命令执行需要在harbor的安装目录
3. 页面操作指南
- 访问 Harbor 控制台
- 浏览器打开:https://<你的IP或域名>(如果使用 HTTP,则访问 http://<你的IP或域名>)
- 默认账号:admin
- 默认密码:harbor.yml 中配置的 harbor_admin_password(如 Harbor12345)
- 首次登录后操作
- 修改密码(强制):
- 登录后系统会提示修改默认密码。
- 创建项目(Project):
- 导航至 项目 → 新建项目
- 输入项目名称(如 my-project),选择访问级别(公开/私有)。
- 推送镜像到 Harbor:
1# 登录 Docker 客户端 2docker login <你的IP或域名> -u admin -p <你的密码> 3 4# 标记并推送镜像 5docker tag nginx:latest <你的IP或域名>/my-project/nginx:v1 6docker push <你的IP或域名>/my-project/nginx:v1 - 从 Harbor 拉取镜像:
1docker pull <你的IP或域名>/my-project/nginx:v1 - 修改密码(强制):
4. 核心功能操作
用户管理
- 路径:系统管理 → 用户管理
- 操作:
- 创建新用户
- 分配角色(如项目管理员、开发者)
镜像安全扫描
- 路径:进入项目 → 选择镜像 → 扫描
- 功能:自动检测镜像漏洞(需安装 Trivy 插件)。
配置 Webhook
- 路径:项目 → 机器人账户 → 新建Webhook
- 用途:监听镜像推送事件,触发 CI/CD 流程。
启用内容信任(Notary)
- 路径:系统管理 → 配置 → 内容信任
- 作用:确保镜像来源可信(需额外配置证书)。
5. 常见问题排查
- 如果./install.sh执行出现问题,检查修改后完全清理后重新安装
1# 停止并删除旧容器 2docker-compose down -v 3 4# 删除旧配置 5sudo rm -rf /data/database /data/registry /data/secret 6 7# 重新安装 8sudo ./install.sh - 无法推送/拉取镜像
1# 确认 Docker 客户端已信任证书 2ls /etc/docker/certs.d/<你的IP或域名>:443/ca.crt 3 4# 检查防火墙 5sudo firewall-cmd --list-ports | grep 443 - 控制台访问卡顿
- 优化方案:
1# 调整 Harbor 资源限制 2vim docker-compose.yml - 修改 resources 部分(示例):
1nginx: 2deploy: 3 resources: 4 limits: 5 cpus: "1" 6 memory: 2G
- 忘记管理员密码
1# 进入数据库容器重置 2docker exec -it harbor-db psql -U postgres -d registry 3UPDATE harbor_user SET password='$2a$10$123456' WHERE username='admin';
6. 流程图:镜像推拉流程

参考 [Harbor 官方文档]。(https://goharbor.io/docs/)
发表评论