You need to enable JavaScript to run this app.
导航
镜像迁移通用方案
最近更新时间:2025.03.18 20:42:21首次发布时间:2025.03.18 17:17:35
我的收藏
有用
有用
无用
无用

cr-image-syncer 是镜像仓库自研的通用镜像迁移工具,支持将通用 Docker Registry 类型的镜像仓库(例如华为云、百度云)迁移至火山引擎镜像仓库。

说明

当前镜像仓库已产品化支持,阿里云、腾讯云、AWS、Google、Harbor、Docker 等云厂家镜像仓库至火山引擎镜像仓库的一键迁移,操作详情参见 外部仓库同步至镜像仓库

场景描述

多云和搬站场景中都涉及到镜像仓库的迁移工作,cr-image-syncer工具可以有效的支持通用 Docker Registry 类型的镜像仓库的迁移。

前提条件

  • 已创建镜像仓库标准版实例,操作详情参见 创建标准版实例
  • 已获取同步源头和目的镜像仓库实例的域名、用户名和登录密钥等基本信息。镜像仓库实例基础信息的获取方法参见 标准版实例管理
  • 确保第三方云镜像仓库和火山引擎镜像仓库网络连通。

操作步骤

第一步:下载并安装工具

  • MAC darwin-amd64:

    wget https://cr-tools.tos-cn-beijing.volces.com/darwin/amd64/cr-image-syncer && chmod a+x cr-image-syncer
    
    cr-image-syncer
    20.44MB
  • Linux:

    wget https://cr-tools.tos-cn-beijing.volces.com/linux/amd64/cr-image-syncer && chmod a+x cr-image-syncer
    
    cr-image-syncer
    20.68MB

第二步:批量创建命名空间

  1. 创建配置文件 config.yaml,代码示例如下。

    target:
      type: volc
      apiHost: https://open.volcengineapi.com
      region: cn-beijing
      instance: customer-registry
      accessKey: AKLTY2xxxxMDI3YzE
      secretKey: TkRrMxxxxMFlqVQ==
    
    配置说明
    type云厂商的代号,固定为 volc
    apiHostOpenAPI 访问地址,固定为 https://open.volcengineapi.com
    region火山引擎镜像仓库实例实例所属地域。
    instance火山引擎镜像仓库实例的名称,不是实例 ID
    accessKey访问火山引擎 OpenAPI 所需的密钥信息,获取方法参见 Access Key(密钥)管理
    secretKey访问火山引擎 OpenAPI 所需的密钥信息,获取方法参见 Access Key(密钥)管理
  2. 创建命名空间配置文件 namespace.yaml,代码示例如下。

    defaultConfig:
      repositoryDefaultAccessLevel: "Private"
    namespaces:
      # use default config
    - name: "ns1"
    - name: "ns2"
      # rewrite repositoryDefaultAccessLevel
      repositoryDefaultAccessLevel: "Public"
    - name: "ns3"
      repositoryDefaultAccessLevel: "Private"
    - name: "ns4"
    - name: "ns5"
    
    配置说明

    repositoryDefaultAccessLevel

    命名空间中制品仓库的默认公私有类型。

    • Private:私有 OCI 制品仓库类型,需要输入访问密钥后才能够访问。
    • Public:公有 OCI 制品仓库类型,不需要访问密钥,支持直接访问。
    name待创建命名空间的名称。
  3. 执行批量创建命令。

    cr-image-syncer prepare create-namespace --config config.yaml --namespaces namespace.yaml --debug
    

第三步:批量同步镜像

  1. 将鉴权信息添加至配置文件 config.yaml 中。本示例为第三方云迁移之前火山引擎,source 填写第三方云镜像仓库鉴权信息,target 填写火山引擎镜像仓库鉴权信息。

    source:
      registryHost: src-registry-cn-beijing.cr.****.com
      registryUsername: customer@****
      registryPassword: ****
      insecure: false
    target:
      registryHost: dst-registry-cn-beijing.cr.volces.com
      registryUsername: customer@****
      registryPassword: ****
      insecure: false
    
    配置说明
    registryHost镜像迁移源仓库货目标仓库的地址。

    registryUsername/
    registryPassword

    镜像仓库的登录信息。

    • 第三方云镜像仓库登录信息请参见对应的官网文档。
    • 火山引擎镜像仓库登录信息参见 标准版实例访问凭证
    insecure镜像仓库是否允许 HTTP 登录,建议选择否,填写 false
  2. 配置镜像批量同步文件 images.yaml,示例如下。多行输出时,每行的信息为 <来源 repo>:<目标 repo>

    src-regsitry-cn-beijing.cr.****.com/****/repo: dst-registry-cn-beijing.cr.volces.com/ns1/repo
    src-regsitry-cn-beijing.cr.****.com/****/a: dst-registry-cn-beijing.cr.volces.com/ns2/a
    src-regsitry-cn-beijing.cr.****.com/****/ubuntu: dst-registry-cn-beijing.cr.volces.com/ns2/ubuntu
    
  3. 执行批量同步命令。

    # --debug 按需增加
    cr-image-syncer copy --without-prepare --config config.yaml --images images.yaml --debug
    

操作结果

操作完成后可在对应的 OCI 制品仓库镜像列表中查看已完成同步的镜像。

alt