type
status
date
slug
summary
category
tags
create_time
Jul 14, 2025 07:57 AM
icon
password
my_create_time

📝 前言

最近几期都在介绍 DevOps 专题,在 DevOps 自动化流程中最终都是要生成一个制品以供部署,现在通常这个制品一般都是 Docker 镜像。
如何使得镜像在其他环境任意部署,这个就需要使用到镜像仓库来进行存储和分发了。
总的来说镜像仓库是 DevOps 流程中不可或缺的一部分,这也是本篇需要介绍 Harbor 的原因。

❓ 什么是 Harbor

Harbor 是一个由 CNCF(Cloud Native Computing Foundation)孵化并托管的企业级云原生镜像仓库,用于存储、管理和分发容器镜像与 Helm Chart。
它在 Docker Registry 的基础上进行了增强,增加了身份认证、访问控制、安全扫描、镜像签名、复制策略等功能。
Harbor 支持多种身份集成方式(如 LDAP、OIDC),并且可以通过镜像复制在多地同步镜像,非常适合部署在私有云、本地数据中心或边缘计算环境中。
PS:虽然 Gitea 本身也有自带镜像仓库,但毕竟不如 Harbor 专业,功能也少很多。

🔍 使用场景

Harbor 不仅是一个容器镜像仓库,更是 DevOps 流水线中不可或缺的基础设施组件。
以下是 Harbor 在 DevOps 各阶段中的常见使用场景:
  • 持续集成(CI)阶段
Gitea Actions / Jenkins 等工具在完成镜像构建后,自动将镜像推送至 Harbor。
  • 结合镜像签名进行合规验证
使用 Notary 为镜像签名,防止被篡改。
  • 持续部署(CD)阶段
Kubernetes 集群直接从 Harbor 拉取镜像,用作部署或滚动升级。
  • 多地部署与镜像复制
主数据中心部署一个 Harbor 主仓库,边缘节点或 DR 站点通过镜像复制进行同步。
这也是一个很实用的功能。
  • 镜像自动清理
支持配置保留策略,设置保留最新 N 个版本或最近使用的镜像,避免仓库存储空间无限膨胀,提高资源利用率。

📋 前提条件

部署前请确保你已具备以下环境:
  • 有一台可用的 Linux 服务器(推荐使用 Ubuntu 24.04 或以上的 LTS 版 )

🚀 详细步骤

1️⃣ 下载 Harbor 离线安装包

使用离线安装要更快,执行以下命令进行下载并解压:

2️⃣ 配置 Harbor

进入到解压目录后,执行以下命令复制一份配置文件:
编辑配置文件内容:
其他保持默认就可以了,当然您也可以根据自己需要进行调整。

3️⃣ 安装 Harbor

Harbor 的安装很简单,直接执行 install.sh 即可,如下:
需要注意的是这里会占用80端口,请检查本机是否已安装并启动过 nginx,若有则需关闭或修改harbor http port 端口号配置。
安装成功后,你可以通过浏览器访问 hostname 中配置的地址进入管理后台。
默认账号密码为 admin / Harbor12345

4️⃣ 配置 Docker 使用 Harbor 仓库

由于 Docker 默认是以 https 协议访问镜像仓库,而我们的仓库用的是 http,因此需要修改 Docker 的配置以支持 http 协议。
编辑 /etc/docker/daemon.json,若不存在则新建:
PS:如果是直接使用Gitea的镜像仓库也是需要添加这一步,只需要添加Gitea实例的地址即可。
最后重启 Docker 生效:

5️⃣ 使用 Harbor

使用 docker 命令登录 Harbor:
推送镜像:
PS:使用 Gitea 镜像仓库也是同理,将hostname改为Gitea实例地址,将library替换为用户名即可。

6️⃣ 配置镜像清理策略

一般在开发、测试环境中建议一定要配置镜像清理,否则由于构建频繁很快磁盘就会被撑爆。
通过 Web 登录进入Habor,选择需要清理的项目 → 策略 → 添加规则:
notion image
 
我一般是选择保留最近推送的5个,你也可以根据自己的喜好配置保留规则:
notion image
 
配置完该规则后还没完,还需要配置垃圾回收(GC),否则磁盘空间不会释放
进入系统管理 → 清理服务 → 垃圾清理,配置定时任务执行时间,如我这里配置的是每周,如果构建更为频繁也可以配置为每天:
notion image

✅ 总结

通过本文的讲解,我们成功完成了 Harbor 的离线部署、基础配置以及镜像清理策略,构建起一个功能完善、可在局域网或私有环境中稳定运行的企业级镜像仓库。
Harbor 不仅支持镜像存储与管理,还提供了访问控制、镜像签名、复制策略、垃圾回收等高级功能,是 DevOps 流水线中不可或缺的重要一环。
希望本文对你在本地搭建镜像仓库的实践有所帮助,如有问题欢迎留言交流。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
Gitea Actions 工作流入门指南(实战三)
下一篇
使用二进制部署 Gitea Runner 指南(实战二)

评论
Loading...