Skip to content

Harbor镜像同步

各个Harbor仓库独立项目隔离和权限管理

支持新增地域(如测试集群、边缘节点),架构可横向扩展

内网同步利用高带宽,公网推送优化稳定性

同步方式说明

双向同步

双向同步:在对应的两个Harbor仓库均配置基于事件驱动的单向推送,这样无论在哪个仓库推送镜像,都会同步到另一个镜像仓库

单向推送

推送端收到镜像后,会往被推送端推送镜像,可以用于私网向公网同步镜像

单向拉取

从目标仓库拉取镜像到当前仓库,可以用于私网同步公网的镜像到本地

部署Harbor

参考: 《harbor离线部署2.x

配置双向同步

配置hosts

内网:不管单向还是双向,操作的Harbor所在服务器都需要此操作,公网可忽略,如果harbor仓库走IP访问可忽略

bash
$ vi /etc/hosts
192.168.99.100  harbor.liulike.top
192.168.99.200  registry.liulike.top

修改harbor的docker-compose.yml

bash
$ vi docker-compose.yml
services:
  core:
    ...
    volumes:
      - /data/harbor/data/ca_download/:/etc/core/ca/:z
      - /etc/hosts:/etc/hosts:z                                # 加入此项
      - /data/harbor/data/:/data/:z
      - ./common/config/core/certificates/:/etc/core/certificates/:z
      - type: bind
        source: ./common/config/core/app.conf
        target: /etc/core/app.conf
      - type: bind
        source: /data/harbor/data/secret/core/private_key.pem
        target: /etc/core/private_key.pem
      - type: bind
        source: /data/harbor/data/secret/keys/secretkey
        target: /etc/core/key
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      harbor:
    ...
  jobservice:
    ...
    volumes:
      - /data/harbor/data/job_logs:/var/log/jobs:z
      - /etc/hosts:/etc/hosts:z                                # 加入此项
      - type: bind
        source: ./common/config/jobservice/config.yml
        target: /etc/jobservice/config.yml
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    ...

配置后重启Harbor

bash
$ docker-compose down
$ docker-compose up -d

仓库管理配置

互相配置对方的仓库信息

image-20250814161904914

image-20250814162101798

复制管理配置

复制允许用户在 Harbor 和非 Harbor 注册中心之间复制资源,包括镜像和图表,支持拉取或推送模式。

当 Harbor 系统管理员设置了复制规则后,所有匹配已定义过滤模式的资源以及任何相关的 Cosign 签名,在满足触发条件时将被复制到目标注册中心。每个复制的资源都会启动一个复制任务。如果目标注册中心中命名空间不存在,则会自动创建一个新的命名空间。如果命名空间已存在,并且复制策略中配置的用户账户没有写入权限,则该过程将失败。成员信息不会被复制。

复制期间可能会有一些延迟,具体取决于网络状况。如果复制任务失败,它将在几分钟后重新计划并重试多次。

参考以下配置:

选项内容
复制模式Push-based
源资源过滤器根据需要选择
名称空间不填
仓库扁平化无替换-按原来的层级保存,否则会被替换对应层级
触发模式事件驱动 或 定时

image-20250814162421850

image-20250814162513044

第一次同步:

选择对应的规则,点击复制即可

image-20250814163000954

复制往后目标端就有了所有的镜像:

源端

image-20250814163824605

目标端(可以看到创建时间是不一样的)

image-20250814163052782

此时在其中一个Harbor仓库添加镜像,就会推送到另外一个Harbor仓库