文章总结: 本文介绍了如何从零开始部署Harbor私有镜像仓库,解决企业对DockerHub的依赖问题。文章详细说明了环境准备、Harborv2.14.1下载与安装、HTTPS证书配置、镜像推送测试等步骤,并提供了生产环境最佳实践和常见问题排查方法。Harbor作为CNCF毕业的企业级Registry项目,支持HTTPS、LDAP、镜像复制、内容信任和内置Trivy漏洞扫描,为企业提供安全可控的镜像管理解决方案。
综合评分: 85
文章分类: 云安全,安全建设,解决方案,安全工具,应用安全
告别 Docker Hub 依赖!从零部署高可用 Harbor 私有镜像仓库
原创
小柳实验室
小柳实验室
2025年11月26日 07:02
湖南
在云原生时代,容器镜像已成为应用交付的核心载体。
然而,直接使用 Docker Hub 不仅存在网络不稳定、拉取限速、安全合规风险等问题,更无法满足企业对镜像权限控制、审计追踪、漏洞扫描等高级需求。
这时,一个私有、安全、功能完备的镜像仓库就显得至关重要。
Harbor –由 CNCF 毕业的开源企业级 Registry 项目,正是解决这一痛点的首选方案。它不仅支持 HTTPS、LDAP、镜像复制、内容信任,还内置 Trivy 漏洞扫描,被广泛应用于金融、制造、互联网等行业的生产环境。
本文将带你从零开始,手把手部署最新版 Harbor v2.14.1,涵盖证书配置、HTTPS 启用、镜像推送测试及常见避坑指南,助你快速搭建属于自己的企业级镜像仓库!
一、环境准备
1. 系统要求
操作系统:Linux(推荐 Ubuntu 22.04 或 Rocky Linux 9)
CPU:≥ 2 核
内存:≥ 4GB(建议 8GB)
磁盘:≥ 40GB(用于存储镜像)
Docker ≥ 20.10
Docker Compose ≥ 2.10(v2+)
2. 安装 Docker 和 Docker Compose(有环境就跳过)
在线安装Docker+Docker Compose👉 [还在手动装 Docker?一条命令搞定!](https://mp.weixin.qq.com/s?__biz=MzAxMDM2OTg4NA==&mid=2247484107&idx=1&sn=1842fbec3c2b72d8d303a778817851ac&scene=21#wechat_redirect)****
离线安装Docker+Docker Compose👉 [没网就不能用 Docker?你错了!](https://mp.weixin.qq.com/s?__biz=MzAxMDM2OTg4NA==&mid=2247484293&idx=1&sn=36410014f2baa1aba3d16488762aefc0&scene=21#wechat_redirect)****
3. 开放防火墙端口(根据情况)
Harbor 默认使用:
HTTP: 80
HTTPS: 443
# Ubuntu (ufw)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
# CentOS/Rocky (firewalld)
sudo firewall-cmd --permanent --add-port={80,443}/tcp
sudo firewall-cmd --reload
二、下载 Harbor v2.14.1 离线安装包
cd /opt
wget https://github.com/goharbor/harbor/releases/download/v2.14.1/harbor-offline-installer-v2.14.1.tgz
#下载其他版本的
#https://github.com/goharbor/harbor/releases(当前v2.14.1最新了)
#小柳实验室下载(没有代理,选择这个下载)
https://download.xlsys.cn/docker/harbor/harbor-offline-installer-v2.14.1.tgz
#解压
tar xvf harbor-offline-installer-v2.14.1.tgz
cd harbor
解压后目录结构:
harbor/
├── common.sh
├── harbor.yml.tmpl
├── install.sh
├── prepare
└── harbor.v2.14.1.tar.gz ← 所有镜像打包在此
三、配置 harbor.yml
复制模板并编辑:
cp harbor.yml.tmpl harbor.yml
vim harbor.yml #没有Vim 用Vi
关键配置项
# 【必改】访问地址(域名或公网IP,不能是 localhost 或 127.0.0.1)
hostname: lab.xlsys.cn
# HTTP(测试可用,生产不推荐)
# http:
# port: 80 #测试环境
# HTTPS(强烈推荐)
https:
port: 443
certificate: /data/cert/fullchain.pem
private_key: /data/cert/privkey.pem
# 初始管理员密码(至少8位,含大小写+数字)
harbor_admin_password: YourSecurePass123!
# 数据存储路径
data_volume: /data/harbor
# 数据库配置(默认即可,生产可外接)
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
# 日志
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
# 可选:启用 Trivy 漏洞扫描(v2.14 默认集成)
trivy:
ignore_unfixed: false
skip_update: false
insecure: false
⚠️ 注意:hostname 必须与你后续访问的 URL 一致,否则 HTTPS 会报证书错误。
四、(可选)生成自签名证书(仅用于测试)
mkdir -p /data/cert && cd /data/cert
# 生成私钥
openssl genrsa -out privkey.pem 4096
# 生成证书请求(注意 Common Name 填 hostname)
openssl req -new -key privkey.pem -out cert.csr -subj "/CN=harbor.yourcompany.com"
# 生成自签名证书(有效期10年)
openssl x509 -req -days 3650 -in cert.csr -signkey privkey.pem -out fullchain.pem
然后在 harbor.yml 中指定路径(见上文)。
PS:有证书,自行更换可信的证书。
五、执行安装
Harbor使用 prepare 脚本生成最终配置,再由 install.sh 启动:
# 运行 prepare(会加载 harbor.yml 并生成 docker-compose.yml)
sudo ./prepare
# 执行安装(自动加载镜像并启动容器)
sudo ./install.sh
🟢 成功提示:
[Step 5]: starting Harbor ...
✔ ----Harbor has been installed and started successfully.----
六、验证服务
- 1. 查看容器状态
docker compose -f /opt/harbor/docker-compose.yml ps
应看到以下服务全部 Up:
2. 访问 Web UI
浏览器打开:
👉 https://harbor.yourcompany.com
使用账号登录:
用户名:admin
密码:你在 harbor.yml 中设置的 harbor_admin_password
七、客户端推送镜像测试
1. 在客户端信任证书(若为自签名)
# 将 Harbor 服务器的 fullchain.pem 复制到客户端
sudo mkdir -p /etc/docker/certs.d/harbor.yourcompany.com
scp root@harbor-server:/data/cert/fullchain.pem /etc/docker/certs.d/harbor.yourcompany.com/ca.crt
# 重启 Docker
sudo systemctl restart docker
2. 登录并推送
# 登录
docker login harbor.yourcompany.com
# 打标签并推送
docker pull alpine:latest
docker tag alpine:latest harbor.yourcompany.com/library/alpine:latest
docker push harbor.yourcompany.com/library/alpine:latest
注意: 需先在 Harbor Web 界面创建名为 library 的公开或私有项目!
八、常用运维命令
# 进入 harbor 目录操作
cd /opt/harbor
# 停止服务
sudo docker compose down
# 启动服务
sudo docker compose up -d
# 查看日志
sudo tail -f /var/log/harbor/core.log
# 升级 Harbor(保留数据)
# 1. 备份 /data/harbor 和 /var/log/harbor
# 2. 下载新版本安装包,替换 harbor.yml
# 3. 运行新版本的 ./install.sh --with-notary --with-trivy 等参数
九、生产环境最佳实践
启用 OIDC 集成: 支持对接 Keycloak、Auth0、Azure AD 等。
开启内容信任(Notary): 确保镜像签名验证。
配置外部 PostgreSQL/Redis: 提升高可用性。
启用垃圾回收(GC): 定期清理未引用的镜像层。
配置审计日志对接 ELK/Splunk。
使用 Helm Chart 部署 Kubernetes 版本(适用于大规模集群)。
十、常见问题排查
| 问题 | 解决方案 |
| — | — |
| certificate signed by unknown authority | 客户端未信任证书,需添加 CA |
| port 80/443 already in use | 停止 Nginx/Apache 或修改 harbor.yml 端口 |
| 推送镜像失败:project not found | 先在 Web UI 创建对应项目 |
| 安装卡在 “Loading harbor images” | 检查磁盘空间、网络,或手动执行 docker load -i harbor.v2.14.1.tar.gz |
写在最后
至此,你的企业级私有镜像仓库已成功上线!
Harbor 不仅帮你摆脱对公有 Registry 的依赖,更为 DevOps 流水线、K8s 集群和安全合规打下坚实基础。
🔖标签:#Harbor #私有镜像仓库 #运维实战 #企业级部署
📬 关注我
推荐阅读
Docker磁盘空间告急?3分钟教你彻底清理,释放大量空间!
【实战】打造超强Linux防火墙!10分钟提升服务器安全等级
一个不存在的用户,竟让MySQL 8.4当场崩溃?背后藏着甲骨文不敢明说的安全暗战!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:小柳实验室 小柳实验室《告别 Docker Hub 依赖!从零部署高可用 Harbor 私有镜像仓库》