一、项目背景与目标
(一)核心需求驱动
在企业容器化部署场景中,国外 Docker 镜像源访问受限、科学上网风险高,且主流镜像加速器收费模式难以满足长期需求。因此,搭建本地化私有镜像库成为保障 K8s 集群镜像拉取稳定性的关键。本项目采用开源工具 Harbor,旨在构建一个具备 Web 管理界面、权限控制及审计功能的企业级镜像服务平台。
(二)项目价值
- 技术能力提升:巩固 Linux 系统服务部署、Docker 容器与镜像管理等核心技能。
- K8s 前置准备:为后续 K8s 集群搭建提供镜像存储基础,优化集群部署效率。
- 团队协作实践:3 人小组协作,1 周内完成从环境搭建到功能测试的全流程开发,积累项目实战经验。
二、Harbor 基础与环境规划
(一)Harbor 特性解析
Harbor 由 VMware 开源,基于 Docker Registry v2 深度扩展,提供以下核心能力:
- 可视化管理:通过 Web 界面轻松管理镜像仓库、项目及用户权限。
- 安全控制:支持 RBAC 角色访问控制、AD/LDAP 集成,保障镜像访问安全。
- 企业级功能:审计日志、镜像复制、中文支持等特性满足企业合规要求。
- 官网:Harbor
(二)单节点部署架构
主机名 | IP 地址 | 硬件配置 | 软件版本 |
---|---|---|---|
Harbor | 192.168.88.100 | CPU:2 核 / 内存:2GB / 硬盘:20GB / 网络:NAT | VMware 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 部署
-
配置阿里云 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
-
安装 Docker CE
yum install -y docker-ce systemctl enable --now docker docker version # 验证安装
-
配置镜像加速器
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
-
安装 Docker Compose
yum install -y docker-compose
(三)Harbor 服务部署
-
下载与解压
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
-
配置 Harbor
mv harbor.yml.tmpl harbor.yml vim harbor.yml # 修改以下关键配置 hostname: 192.168.88.100 # 替换为服务器IP http: port: 1021 # 避免80端口冲突 harbor_admin_password: 123 # 初始管理员密码
-
一键安装
./install.sh docker ps # 验证9个容器正常运行
-
Web 界面访问
浏览器输入http://192.168.88.100:1021
,使用admin/123
登录,界面如下:
四、K8s 镜像管理实战
(一)镜像处理流程
-
下载与导入镜像
从阿里云等公共源下载 K8s 所需 11 个镜像(如 kube-apiserver、etcd、coredns 等),通过压缩包导入本地:mkdir /images && cd /images docker load -i *.tar # 批量导入镜像
-
镜像重命名
为镜像添加 Harbor 仓库地址前缀,示例:docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.0 192.168.88.100:1021/k8s/kube-apiserver:v1.28.0
-
创建 Harbor 项目
在 Harbor 界面创建公开项目 “k8s”,用于存储集群镜像:
(二)镜像推送与验证
-
登录 Harbor
docker login 192.168.88.100:1021 -u admin -p 123
-
批量推送镜像
docker push 192.168.88.100:1021/k8s/[镜像名]:[版本]
-
验证镜像存储
登录 Harbor Web 界面,查看 “k8s” 项目下的镜像列表,确认所有镜像推送成功:
五、常见问题与维护
(一)访问异常处理
- 问题现象:Docker 客户端连接 Harbor 时提示 HTTPS 错误。
- 解决方案:
- 确保 Harbor 配置为 HTTP 模式(非 HTTPS)。
- 检查
/etc/docker/daemon.json
中insecure-registries
配置是否正确。 - 重启 Docker 服务:
systemctl restart docker
。
(二)服务启停命令
cd /harbor
docker compose start # 启动Harbor
docker compose stop # 停止Harbor
docker compose restart # 重启Harbor
六、项目总结
通过本项目实践,掌握了从系统部署到镜像管理的全流程技能,Harbor 的企业级特性为 K8s 集群提供了安全、可控的镜像服务。后续可扩展多节点集群部署、启用 HTTPS 加密及镜像同步功能,进一步提升镜像库的可用性与安全性。