构建Harbor私有镜像库

一、项目背景与目标

(一)核心需求驱动

在企业容器化部署场景中,国外 Docker 镜像源访问受限、科学上网风险高,且主流镜像加速器收费模式难以满足长期需求。因此,搭建本地化私有镜像库成为保障 K8s 集群镜像拉取稳定性的关键。本项目采用开源工具 Harbor,旨在构建一个具备 Web 管理界面、权限控制及审计功能的企业级镜像服务平台。

(二)项目价值

  • 技术能力提升:巩固 Linux 系统服务部署、Docker 容器与镜像管理等核心技能。
  • K8s 前置准备:为后续 K8s 集群搭建提供镜像存储基础,优化集群部署效率。
  • 团队协作实践:3 人小组协作,1 周内完成从环境搭建到功能测试的全流程开发,积累项目实战经验。

二、Harbor 基础与环境规划

(一)Harbor 特性解析

Harbor 由 VMware 开源,基于 Docker Registry v2 深度扩展,提供以下核心能力:

  • 可视化管理:通过 Web 界面轻松管理镜像仓库、项目及用户权限。
  • 安全控制:支持 RBAC 角色访问控制、AD/LDAP 集成,保障镜像访问安全。
  • 企业级功能:审计日志、镜像复制、中文支持等特性满足企业合规要求。
  • 官网:Harbor

(二)单节点部署架构

主机名IP 地址硬件配置软件版本
Harbor192.168.88.100CPU:2 核 / 内存:2GB / 硬盘:20GB / 网络:NATVMware 17.6
OpenEuler 22.03 SP4
Docker 26.1.4
Docker Compose 1.22.0
Harbor 2.12.2

 

三、环境搭建与服务部署

(一)系统初始化配置

1.最小化安装 OpenEuler
通过 VMware 创建虚拟机,选择最小化安装,确保系统轻量高效。

2.基础服务配置

# 关闭防火墙与SELinux
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
# 设置主机名
hostnamectl set-hostname harbor
# 配置静态IP(示例)
vim /etc/sysconfig/network-scripts/ifcfg-ens32
# 添加以下内容
BOOTPROTO=none
IPADDR=192.168.88.100
PREFIX=24
GATEWAY=192.168.88.2
DNS1=223.5.5.5
systemctl restart network

3.安装基础工具

yum install -y vim tree tar net-tools

二)Docker 与 Compose 部署

  1. 配置阿里云 Docker 源

    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/' /etc/yum.repos.d/docker-ce.repo
    sed -i 's/$releasever/7/' /etc/yum.repos.d/docker-ce.repo  # 适配OpenEuler
    yum makecache
    
  2. 安装 Docker CE

    yum install -y docker-ce
    systemctl enable --now docker
    docker version  # 验证安装
    
  3. 配置镜像加速器

    vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://docker.1ms.run", "https://docker.1panel.live/"],
      "insecure-registries": ["http://192.168.88.100:1021"]  # 预配置私有库地址
    }
    systemctl daemon-reload && systemctl restart docker
    
  4. 安装 Docker Compose

    yum install -y docker-compose
    

(三)Harbor 服务部署

  1. 下载与解压

    cd /
    wget https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz
    tar -xvf harbor-offline-installer-v2.12.2.tgz
    cd harbor
    
  2. 配置 Harbor

    mv harbor.yml.tmpl harbor.yml
    vim harbor.yml
    # 修改以下关键配置
    hostname: 192.168.88.100  # 替换为服务器IP
    http:
      port: 1021  # 避免80端口冲突
    harbor_admin_password: 123  # 初始管理员密码
    
  3. 一键安装

    ./install.sh
    docker ps  # 验证9个容器正常运行
    
  4. Web 界面访问
    浏览器输入 http://192.168.88.100:1021,使用 admin/123 登录,界面如下:

 

 

四、K8s 镜像管理实战

(一)镜像处理流程

  1. 下载与导入镜像
    从阿里云等公共源下载 K8s 所需 11 个镜像(如 kube-apiserver、etcd、coredns 等),通过压缩包导入本地:

    mkdir /images && cd /images
    docker load -i *.tar  # 批量导入镜像
    
  2. 镜像重命名
    为镜像添加 Harbor 仓库地址前缀,示例:

    docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.0 192.168.88.100:1021/k8s/kube-apiserver:v1.28.0
    
  3. 创建 Harbor 项目
    在 Harbor 界面创建公开项目 “k8s”,用于存储集群镜像:

 ​​​​​​

 

(二)镜像推送与验证

  1. 登录 Harbor

    docker login 192.168.88.100:1021 -u admin -p 123
    
  2. 批量推送镜像

    docker push 192.168.88.100:1021/k8s/[镜像名]:[版本]
    
  3. 验证镜像存储
    登录 Harbor Web 界面,查看 “k8s” 项目下的镜像列表,确认所有镜像推送成功:

 

五、常见问题与维护

(一)访问异常处理

  • 问题现象:Docker 客户端连接 Harbor 时提示 HTTPS 错误。
  • 解决方案
    1. 确保 Harbor 配置为 HTTP 模式(非 HTTPS)。
    2. 检查 /etc/docker/daemon.json 中 insecure-registries 配置是否正确。
    3. 重启 Docker 服务:systemctl restart docker

(二)服务启停命令

cd /harbor
docker compose start    # 启动Harbor
docker compose stop     # 停止Harbor
docker compose restart  # 重启Harbor

六、项目总结

通过本项目实践,掌握了从系统部署到镜像管理的全流程技能,Harbor 的企业级特性为 K8s 集群提供了安全、可控的镜像服务。后续可扩展多节点集群部署、启用 HTTPS 加密及镜像同步功能,进一步提升镜像库的可用性与安全性。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值