首页/云/云与容器速查/Harbor 私有镜像仓库
容器与 Docker106 条

Harbor 私有镜像仓库

主流开源自建仓库:项目级 RBAC、镜像扫描、远程复制、机器人账号与配额。CI 用机器人账号按最小权限推送,生产环境全走内网仓库。

云与容器速查云更新于 2026-10-13

自建镜像仓库

Harbor 是主流开源自建镜像仓库,提供项目级 RBAC、镜像漏洞扫描、远程复制、机器人账号与存储配额。它解决的是镜像分发的可控性:内网节点不依赖公网仓库,镜像来源有审计,漏洞可在拉取前拦住。典型用法是 CI 用机器人账号按最小权限推送,生产集群只从内网仓库拉取。

基本信息

核心概念项目即命名空间,下设仓库与标签;成员角色有项目管理员、维护者、开发者、访客
机器人账号为 CI 生成的专用账号,可限定只能推送指定项目
镜像扫描集成 Trivy 等扫描器,可配置阻止存在严重漏洞的镜像被拉取
复制多实例间镜像同步,用于异地灾备与多集群分发
配额与保留项目级存储配额、标签保留策略,配合垃圾回收真正释放空间
部署官方离线包或 docker compose 安装,对外建议启用 HTTPS

典型使用场景

  • 内网与隔离环境分发镜像,节点不依赖公网仓库与第三方速率限制
  • 多集群或异地机房:配置复制规则,让各集群就近拉取同一镜像
  • 合规门禁:推送即扫描,存在严重漏洞的镜像不允许进入生产项目
  • CI 最小权限推送:机器人账号只授予目标项目的推送权限,凭据泄露影响面受限
  • 审计追溯:通过操作日志确认镜像由哪个账号在什么时间推送

登录、推送与核对

登录、推送与核对
docker login harbor.example.com -u 'robot$ci' --password-stdin < token.txt  # 机器人账号登录
docker tag myapp:1.2.3 harbor.example.com/team/myapp:1.2.3                  # 加仓库前缀
docker push harbor.example.com/team/myapp:1.2.3                             # 推送到项目
docker manifest inspect harbor.example.com/team/myapp:1.2.3 | head -5       # 核对远端已有该标签
docker pull harbor.example.com/team/myapp:1.2.3                             # 生产节点拉取验证

常见故障与原因

现象常见原因处理方式
server gave HTTP response to HTTPS client仓库用 HTTP,客户端默认走 HTTPS启用正式证书,或在客户端配置 insecure-registries
x509 certificate signed by unknown authority自签证书未被客户端信任把 CA 放到客户端的 certs.d 目录并重启 docker
denied: requested access denied账号无该项目权限,或登录了错误域名用机器人账号并核对项目成员权限
no space left on device项目配额用满或后端存储磁盘满扩配额、清理旧标签后执行垃圾回收
pull 超时或解析失败节点到仓库的网络或 DNS 不可达在节点上直接 curl 仓库地址验证连通性
自签证书的内网仓库需要在每个客户端配置可信证书(或用 insecure-registries,形如在 daemon.json 中声明仓库域名);生产环境建议使用正式证书,避免为了省事把校验关掉。
机器人账号权限给成项目管理员,等于把全项目的镜像增删权交给 CI:流水线凭据一旦泄露即可覆盖或删除镜像。生产项目建议同时开启标签不可变规则,防止同名标签被覆盖推送。

易错点

  • HTTP 仓库未配 insecure:docker push 报 server gave HTTP response to HTTPS client,反复怀疑账号权限
  • 机器人账号权限给成项目管理员:CI 被入侵即全项目沦陷,且事后难以判断哪些镜像被替换
  • 只删除标签就以为释放了空间:不触发垃圾回收时底层存储不会回收,磁盘仍被占满
  • 生产节点直连公网仓库:拉取依赖外网链路与速率,镜像来源也失去内网仓库的审计与扫描环节

数据来源与参考

  • Harbor 官方文档:核心功能与快速部署

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌