搭建私有仓库Harbor实现过程(亲测无坑)
更新时间:2026年04月08日 16:53:58 作者:lzz的编码时刻
本文介绍了搭建Harbor私有镜像仓库的步骤,包括环境要求、安装Docker和DockerCompose、下载并安装Harbor、修改配置文件、生成SSL证书、安装Harbor以及配置使用Harbor,同时,还提供了常见问题的解决方法和维护建议
1. 概述
Harbor 是由 VMware 公司开源的企业级 Docker Registry 项目,提供了基于角色的访问控制(Role Based Access Control)、镜像复制、漏洞扫描等企业级功能。
本文将介绍如何搭建 Harbor 私有镜像仓库。
1.1 为什么需要私有镜像仓库
- 提高镜像下载速度
- 节省网络带宽
- 确保镜像安全性
- 便于管理公司内部的容器镜像
2. 环境要求
- 操作系统: CentOS 7 或更高版本
- Docker Engine: 20.10.0 或更高版本
- Docker Compose: 1.18.0 或更高版本
硬件配置:
- CPU: 最少2核
- 内存: 最少4GB
- 硬盘: 最少40GB
3. 安装步骤
3.1 安装 Docker
首先配置 Docker 的阿里云镜像源:
# 安装必要工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Docker 阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装 Docker
yum install -y docker-ce docker-ce-cli containerd.io
# 配置 Docker 镜像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# 启动 Docker
systemctl daemon-reload
systemctl enable docker
systemctl start docker
3.2 安装 Docker Compose
# 下载 Docker Compose 二进制文件 # 使用国内镜像下载 Docker Compose wget https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose # 添加可执行权限 chmod +x /usr/local/bin/docker-compose # 验证安装 docker-compose --version # 如果上述方法都不工作,可以尝试使用 yum 安装 # yum install -y docker-compose-plugin # 然后使用 # docker compose version
![]()
安装成功:
3.3 下载并安装 Harbor
# 下载 Harbor 安装包(如果下载较慢,建议使用国内镜像) wget https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz # 或使用以下链接: # wget https://mirrors.aliyun.com/harbor/harbor-offline-installer-v2.8.3.tgz # 解压安装包 tar xvf harbor-offline-installer-v2.8.3.tgz cd harbor # 复制配置文件模板 cp harbor.yml.tmpl harbor.yml
3.4 修改 Harbor 配置文件
编辑 harbor.yml 文件:
# 修改 hostname hostname: lzz.harbor.com # 改为你的域名或IP地址 # 修改 https 相关配置(使用 https) https: port: 443 certificate: /data/cert/lzz.harbor.com.crt private_key: /data/cert/lzz.harbor.com.key # 修改管理员密码(建议修改) harbor_admin_password: Harbor12345 # 修改数据存储路径(可选) data_volume: /data/harbor # 修改数据库密码(建议修改) database: password: root123
3.5 生成 SSL 证书
启用 HTTPS,需要生成 SSL 证书:
# 创建证书目录 mkdir -p /data/cert cd /data/cert # 生成私钥 openssl genrsa -out ca.key 4096 # 生成证书 openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=lzz.harbor.com" \ -key ca.key \ -out ca.crt # 生成服务器证书 openssl genrsa -out lzz.harbor.com.key 4096 openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=lzz.harbor.com" \ -key lzz.harbor.com.key \ -out lzz.harbor.com.csr # 生成 x509 v3 扩展文件 cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=lzz.harbor.com DNS.2=harbor DNS.3=hostname EOF # 使用 v3.ext 文件为域名生成证书 openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in lzz.harbor.com.csr \ -out lzz.harbor.com.crt
3.6 安装 Harbor
# 执行安装脚本 ./install.sh --with-notary --with-trivy # 验证安装 docker ps

访问可视化界面
使用 admin/Harbor12345 登录

4. 配置使用
4.1 配置 Docker 信任 Harbor 证书
在需要访问 Harbor 的客户端机器上执行:
#在140执行,发送证书到远程主机 scp /data/cert/lzz.harbor.com.crt user@target-machine:/root/ ##在其他主机执行 # 创建证书目录 mkdir -p /etc/docker/certs.d/lzz.harbor.com/ # 复制证书 cp ca.crt /etc/docker/certs.d/lzz.harbor.com/ # 重启 Docker systemctl restart docker
4.2 登录 Harbor
# 登录 Harbor docker login lzz.harbor.com # 使用默认账号密码 # 用户名: admin # 密码: Harbor12345 (如果你修改过配置文件中的密码,使用修改后的密码)
登录成功

4.3 推送镜像示例
# 标记镜像 docker tag nginx:latest lzz.harbor.com/library/nginx:v1 # 推送镜像 docker push lzz.harbor.com/library/nginx:v1 # 拉取镜像 docker pull lzz.harbor.com/library/nginx:v1

5. 常见问题
5.1 无法访问 Harbor 界面
- 检查防火墙设置
# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 或者开放需要的端口 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=4443/tcp firewall-cmd --reload
5.2 推送镜像失败
- 检查证书配置
- 确认 Docker 客户端配置了正确的证书
- 检查存储空间是否足够
5.3 Harbor 服务无法启动
检查日志:
docker-compose ps docker-compose logs
5.4 修改 Harbor 配置
如果需要修改 Harbor 配置:
# 停止 Harbor docker-compose down # 修改配置文件 harbor.yml # 重新配置 ./prepare # 启动 Harbor docker-compose up -d
6. 维护建议
6.1 定期备份
# 备份 Harbor 的数据 cp -r /data/harbor /data/harbor_backup_$(date +%Y%m%d) # 备份数据库 docker-compose exec harbor-db mysqldump -u root -p harbor > harbor_db_backup_$(date +%Y%m%d).sql
6.2 监控
建议配置以下监控:
- 系统资源使用情况
- Harbor 服务状态
- 存储空间使用情况
- 访问日志
6.3 安全建议
- 及时更新 Harbor 版本
- 使用强密码
- 启用 HTTPS
- 配置访问控制策略
- 定期扫描镜像漏洞
参考资料:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
haproxy+keepalived实现高可用负载均衡(实例配置)
上一篇文章以理论介绍居多,这篇文章就以实际的应用配置为主,需要的朋友可以参考下这两篇文章2013-01-01
Linux中的/usr目录以及bin、sbin和lib的使用详解
Linux文件系统通过/usr合并和/bin/sbin统一方案简化结构,利用符号链接保持兼容性,适应现代技术需求,这一演变旨在消除冗余,提升系统灵活性和包管理一致性,但面临传统习惯与遗留系统兼容性的挑战2025-08-08


最新评论