搭建私有仓库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
  • 配置访问控制策略
  • 定期扫描镜像漏洞

参考资料:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解CentOS 7下安装Tomcat到服务

    详解CentOS 7下安装Tomcat到服务

    本篇文章主要介绍了CentOS 7下安装Tomcat到服务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Linux之线程的创建方式

    Linux之线程的创建方式

    这篇文章主要介绍了Linux之线程的创建方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Linux服务器如何设置启动自动登录

    Linux服务器如何设置启动自动登录

    在远程操作服务器时,配置自动登录可以带来便利,首先修改/etc/passwd文件,将root用户的密码字段清空,接着,修改/etc/gdm/custom.conf文件,在[daemon]部分添加或修改自动登录的用户信息,完成后重启服务器,即可实现用户自动登录
    2024-09-09
  • Linux系统安装并配置jdk1.8全过程

    Linux系统安装并配置jdk1.8全过程

    总结:文章介绍了如何在服务器上安装和配置JDK的步骤,包括上传JDK、解压、设置权限、配置环境变量以及验证安装
    2025-11-11
  • Linux中Curl参数详解实践应用

    Linux中Curl参数详解实践应用

    在现代网络开发和运维工作中,curl 命令是一个不可或缺的工具,它是一个利用 URL 语法在命令行下工作的文件传输工具,支持多种协议,如 HTTP、HTTPS、FTP 等,本文给大家介绍了Linux中Curl参数详解实践应用,需要的朋友可以参考下
    2025-01-01
  • haproxy+keepalived实现高可用负载均衡(实例配置)

    haproxy+keepalived实现高可用负载均衡(实例配置)

    上一篇文章以理论介绍居多,这篇文章就以实际的应用配置为主,需要的朋友可以参考下这两篇文章
    2013-01-01
  • Apache中使非伪静态url跳转到伪静态url的方法

    Apache中使非伪静态url跳转到伪静态url的方法

    这篇文章主要介绍了Apache中使非伪静态url跳转到伪静态url的方法,主要是在使用.htaccess时的问题,需要的朋友可以参考下
    2015-07-07
  • Linux系统的SSL/TLS证书机制详解

    Linux系统的SSL/TLS证书机制详解

    文章概述了SSL/TLS证书原理、Linux系统预装证书的存储与用途,以及新服务(如POP3)自动生成自签名证书的过程和局限性,最后推荐使用Let's Encrypt等自动化工具提升安全性
    2025-09-09
  • Linux中的/usr目录以及bin、sbin和lib的使用详解

    Linux中的/usr目录以及bin、sbin和lib的使用详解

    Linux文件系统通过/usr合并和/bin/sbin统一方案简化结构,利用符号链接保持兼容性,适应现代技术需求,这一演变旨在消除冗余,提升系统灵活性和包管理一致性,但面临传统习惯与遗留系统兼容性的挑战
    2025-08-08
  • Linux共享内存原理及分析

    Linux共享内存原理及分析

    文章介绍了共享内存作为进程通信方式,通过物理内存映射实现进程间共享资源,其核心步骤为申请内存、挂接虚拟地址、去关联释放,需用户指定key值确保唯一性,操作系统管理其生命周期,共享内存速度快但需自行维护同步机制
    2025-10-10

最新评论