Harbor 镜像代理仓库配置指南

📝 前言

我们在之前一期中介绍了如何快速部署 Harbor 企业级镜像仓库:《离线部署 Harbor 企业级镜像仓库指南》,这一篇我们再来介绍如何通过 Harbor 配置 Dockerhub 的镜像代理,自动缓存官方镜像。

PS:Gitea 镜像仓库好像是没有该功能的。

🧭 背景介绍

Harbor 是由 CNCF 维护的企业级 Docker 镜像仓库解决方案,支持用户管理、访问控制、安全扫描、镜像复制等企业所需功能。

在生产环境中,很多用户会遇到 镜像拉取缓慢、境外源不稳定 或 源仓库不可信 等问题,尤其是部署在内网或私有云中的 Kubernetes 集群。

为了提升拉取效率与可用性,Harbor 提供了镜像代理功能(Proxy Cache),可以将 Docker Hub、Google Container Registry(GCR)、Quay.io 等公共仓库的镜像缓存到本地,实现 本地代理拉取加速 + 镜像版本控制 + 安全合规。

🔍 使用场景

  • 拉取 Docker Hub 镜像速度缓慢,构建 CI/CD 或部署应用耗时过长
  • 无法访问国外公共仓库(如 k8s.gcr.ioquay.iohub.docker.com
  • 想通过 Harbor 代理官方仓库,实现镜像同步与缓存策略

📌 最终目标

通过直接拉取自建仓库的镜像时,自动缓存国外公共仓库镜像,如:

1
2
# 首次当镜像仓库内不存在官方镜像时,会自动去官方拉取并缓存
docker pull harbor.luhome.com/hub/nginx:alpine

📋 前提条件

在开始之前请确保您已满足以下条件:

🚀 详细步骤

1️⃣ 修改 Harbor 代理配置

首先我们需要配置 Harbor 的代理配置,使其可以访问国外公共仓库。

进入 Harbor 安装目录,编辑以下配置文件:

vim common/config/core/env

1
2
3
4
# 找到并修改以下代理配置
HTTP_PROXY=http://<你的代理服务器地址>
HTTPS_PROXY=http://<你的代理服务器地址>
NO_PROXY=<在这后面追加内网无需代理的配置,例如:192.168.10.0/24,.luhome.com>

2️⃣ 重启 Harbor Core 服务

修改完配置后,我们需要再重启一下 Harbor 的服务生效:

1
docker compose down core && docker compose up -d core

3️⃣ 创建远程仓库目标

登录 Harbor 控制台 → 系统管理 → 仓库管理 → 新建目标,如下图所示:

参数说明:

  • 提供者:选择Docker Hub或其他国外公开镜像仓库
  • 目标名:可以随便取个名字
  • 访问ID:Docker Hub的用户名
  • 访问密码:Docker Hub的用户密码

配置完成之后再点击测试连接,查看是否可正常连接到远程仓库,返回正常的话就可以点击确定了。

PS:这里也支持创建多个不同的代理目标,如:k8s.gcr.ioquay.io

4️⃣ 创建代理项目

回到 Harbor 控制台的项目菜单,点击新建项目,配置如下:

参数说明:

  • 项目名称:可随便填,简单点也可以直接填 hub
  • 访问级别:都是内网可以直接开启公开
  • 镜像代理:开启,并选择我们刚创建的代理目标

最后点击确定即可。

5️⃣ 测试代理镜像拉取

假设你配置的 Harbor 域名为harbor.luhome.com,项目为 hub,可以使用以下命令测试:

1
docker pull harbor.luhome.com/hub/nginx:alpine

其中nginx:alpine为官方Dockerhub的镜像地址,首次拉取时 Harbor 会自动从 Docker Hub 拉取并缓存,后续访问将直接从 Harbor 获取,提高速度。

可在项目镜像仓库中查看是否已缓存,如下图:

✅ 总结

Harbor 的镜像代理缓存功能极大提升了容器镜像拉取效率,提升了企业内部的 DevOps 体验,同时确保了镜像安全与合规。
通过本指南配置后,你将拥有一个安全、高速、可控的本地镜像代理平台,同时也省去了手动上传官方公共镜像的步骤。