You need to enable JavaScript to run this app.
导航

外部仓库同步至镜像仓库

最近更新时间2024.03.06 10:23:27

首次发布时间2022.07.14 10:48:32

本文主要介绍实例同步功能中,将外部仓库迁移到火山引擎镜像仓库标准版实例的操作。

背景信息

镜像仓库 CR 支持一键迁移火山引擎以外的外部仓库至标准版实例,为您提供专业稳定的托管服务及技术支持,减少自行搭建及维护的运维管理成本,满足低复杂度交付业务需求。

注意

近期中国大陆地区出现无法访问 Docker Hub 的现象,可能导致无法直接通过实例同步规则将 Docker Hub 镜像迁移至华南1(广州)地域镜像仓库中。

建议通过实例同步规则将 Docker Hub 中镜像迁移到华北2(北京)或华东2(上海)地域,然后在北京或上海地域拉取镜像。

使用限制

  • 当前支持迁移的外部仓库源包括:阿里云 ACR、AWS ECR 私有 类型存储库、Harbor 和 Docker。
  • 请确保外部仓库源能够通过 公网 正常推拉镜像,当前仅支持公网的方式同步外部镜像。
  • 每个账号最多支持同时启用 5 个同步规则。
  • 规则删除后无法查看历史日志。
  • 每个规则默认保留最近 1000 条同步日志。

前提条件

  • 源实例和目标实例均已处于 运行中 状态。
  • 已准备好外部仓库实例的地址、用户名、密码等相关信息。

操作步骤

步骤一:配置同步规则

  1. 登录 镜像仓库控制台
  2. 在左侧导航栏选择 实例同步,单击 创建实例同步规则
  3. 创建实例同步规则 页面,根据要求填写参数信息。
  • 实例同步类型
    alt

    参数说明
    同步类型选择 外部迁移,将外部仓库迁移到火山引擎镜像仓库标准版实例中。

    说明

    其他同步类型使用场景说明如下:

  • 基本信息
    alt

    参数说明
    名称自定义同步规则名称。同一个账号下名称必须唯一。
    描述根据需要填写对该规则的描述信息。可以为空,字数限制 200 字符以内。
  • 源/目标实例配置
    alt

    外部仓库的来源,目前仅支持 阿里云 ACRAWS(AWS ECR)HarborDocker

    说明

    来源为 AWS ECR 时,仅支持同步 私有 类型存储库,不支持 公有 类型。

    • 阿里云

      • 源实例

      注意

      • 迁移阿里云镜像仓库资源至火山引擎镜像仓库时,为了避免源实例限流,单次同步的镜像数量不能超过 20 个,建议在 15 个以内。
      • Access Key ID 需要至少具备阿里云镜像仓库服务 ACK 的访问权限(例如 AliyunContainerRegistryReadOnlyAccess),以免权限不足导致同步失败。
      参数说明
      API 调用地址http(s):// 开头的外部源仓库服务地址。例如 https://cr.cn-beijing.aliyuncs.com
      实例 ID需要同步的阿里云镜像仓库实例的 ID。
      Access Key ID访问阿里云 OpenAPI 的账号。
      Secret Access Key访问阿里云 OpenAPI 的账号所对应的密钥。
      仓库类型仅支持 镜像 仓库类型下制品同步,Chart 仓库下制品不支持同步。
      命名空间阿里云镜像仓库中需要同步的命名空间名称,单击回车键确定。

      仓库

      需要同步的外部源仓库命名空间下的 OCI 制品仓库。

      • 全部:同步指定命名空间下的全部 OCI 制品仓库。

      • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品仓库。配置详情,请参见本文下方 正则匹配示例

      版本 Tag

      需要同步的 OCI 制品版本。

      • 全部:同步指定仓库下的全部 OCI 制品版本。

      • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品版本。配置详情,请参见本文下方 正则匹配示例

      • 目标实例
      参数说明
      实例名称选择镜像仓库中的目标标准版实例,外部仓库将同步到该标准版实例。

      命名空间

      选择标准版实例下的目标命名空间。

      注意

      • 不填写则默认同步至与源仓库同名的命名空间。
      • 不填写且若不存在同名命名空间,默认在目标实例下创建同名的命名空间。
    • Harbor

      • 源实例
      参数说明
      服务地址http(s):// 开头的外部源仓库服务地址。例如 http://180.**.**.**

      忽略证书有效性

      是否忽略源仓库地址的证书有效性。

      • :忽略外部源仓库证书的有效性,直接同步外部仓库至镜像仓库。

      • 否: 不忽略外部源仓库证书的有效性,若源仓库证书不在有效期内,则无法同步。以 https 开头的服务地址必须选择

      注意

      外部源仓库证书必须为权威机构签发的证书,否则此处选择 后,会同步失败。

      用户名登录 Harbor 仓库的用户名。
      密码登录 Harbor 仓库的密码。
      命名空间Harbor 仓库中需要同步的项目名称。

      仓库

      需要同步的外部源仓库命名空间下的 OCI 制品仓库。

      • 全部:同步指定命名空间下的全部 OCI 制品仓库。

      • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品仓库。配置详情,请参见本文下方 正则匹配示例

      版本 Tag

      需要同步的 OCI 制品版本。

      • 全部:同步指定仓库下的全部 OCI 制品版本。

      • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品版本。配置详情,请参见本文下方 正则匹配示例

      • 目标实例
      参数说明
      实例名称选择镜像仓库中的目标标准版实例,外部仓库将同步到该标准版实例。

      命名空间

      选择标准版实例下的目标命名空间。

      注意

      • 不填写则默认同步至与源仓库同名的命名空间。
      • 不填写且若不存在同名命名空间,默认在目标实例下创建同名的命名空间。
    • AWS

      • 源实例
      参数说明
      服务地址http(s):// 开头的外部源仓库服务地址。例如 http(s)://index.dockrhub.io

      忽略证书有效性

      是否忽略源仓库地址的证书有效性。

      • :忽略外部源仓库证书的有效性,直接同步外部仓库至镜像仓库。

      • 否: 不忽略外部源仓库证书的有效性,若源仓库证书不在有效期内,则无法同步。

      注意

      外部源仓库证书必须为权威机构签发的证书,否则此处选择 后,会同步失败。

      Access Key IDAWS 账号的 Access Key ID。

      Secret Access Key

      AWS 账号的 Secret Access Key。

      仓库

      需要同步的外部源仓库命名空间下的 OCI 制品仓库。

      • 全部:同步指定命名空间下的全部 OCI 制品仓库。

      • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品仓库。配置详情,请参见本文下方 正则匹配示例

      版本 Tag

      需要同步的 OCI 制品版本。

      • 全部:同步指定仓库下的全部 OCI 制品版本。

      • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品版本。配置详情,请参见本文下方 正则匹配示例

      • 目标实例
      参数说明
      实例名称选择镜像仓库中的目标标准版实例,外部仓库将同步到该标准版实例。
      命名空间选择标准版实例下的目标命名空间。
    • Docker

      注意

      Docker Hub 的免费用户存在镜像拉取速率限制,超出限制可能导致同步失败。建议配置方法如下:

      • 正则匹配 采用精确写法,非模糊匹配,避免拉取无用的镜像。例如 仓库 填写 nginx版本 Tag 正则匹配 填写 ^v1.0.0$
      • 同步间隔时长 6 小时以上,避免频繁拉取导致限速。
      • 源实例
      参数说明
      访问地址固定为 https://hub.docker.com

      用户名

      登录 Dockerhub 仓库的用户名。

      注意

      必须使用 Docker Hub 仓库的注册用户名登录,不支持使用邮箱地址登录。

      密码登录 Dockerhub 仓库的密码。

      类型

      支持同步公共仓库和个人仓库:

      • library:同步公开的 Dockhub 仓库,可以获取 nginxubuntu 等基础镜像。

      • 个人仓库:同步个人账号下的 Dockerhub 仓库。

      命名空间

      Docker 仓库中需要同步的命名空间名称。

      • Library(公共仓库):固定为 library

      • 个人仓库:对应 Dockerhub 中的 account + organzation

      仓库

      需要同步的外部源仓库命名空间下的 OCI 制品仓库。

      • Library(公共仓库): 仅支持仓库名称精准匹配,需要正确填写公共仓库的名称,例如 nginxubuntupythonredis 等。

      • 个人仓库:

        • 全部:同步指定命名空间下的全部 OCI 制品仓库。

        • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品仓库。配置详情,请参见本文下方 正则匹配示例

      版本 Tag

      需要同步的 OCI 制品版本。

      • Library(公共仓库):

        • Latest: OCI 制品的最新版本。默认同步 latest 版本。

        • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品版本。可以填.*同步全部。配置详情,请参见本文下方 正则匹配示例

      • 个人仓库:

        • 全部:同步指定仓库下的全部 OCI 制品版本。

        • 正则匹配:通过输入正则规则,匹配需要同步的 OCI 制品版本。配置详情,请参见本文下方 正则匹配示例

      • 目标实例
      参数说明
      实例名称选择镜像仓库中的目标标准版实例,外部仓库将同步到该标准版实例。

      命名空间

      选择标准版实例下的目标命名空间。

      注意

      • 不填写则默认同步至与源仓库同名的命名空间。
      • 不填写且若不存在同名命名空间,默认在目标实例下创建同名的命名空间。
      • 选择 library 时,默认同步至命名空间 library 下。没有 library 命名空间则时默认创建。
  • 同步规则
    alt

    参数说明
    镜像覆盖勾选后启用。启用后表示若目标标准版实例中存在与外部仓库中的镜像同名的镜像,则外部仓库镜像会覆盖目标实例的已有同名镜像。

    规则状态

    勾选后启用该规则,并可选择设置以下触发条件:

    • 定时触发:设置后固定间隔时间触发一次同步,首次同步时间视设置决定。

      • 首次触发时间:注意最早只能设置到当前时间。

      • 触发频率:设置间隔时间。默认每 24 小时触发一次。可选范围为 1 ~ 720 小时。

    • 手动触发:若选择手动触发,该规则不会被自动触发,需要您手动执行同步操作。

步骤二:执行同步规则

支持如下两种触发方式:

  • 若您在配置同步规则时选择 定时触发,则系统会定时自动触发一次同步。

    说明

    定时触发的同步规则,也可以手动触发。

  • 若您选择 手动触发,请参考以下步骤:
    1. 镜像仓库控制台的左侧导航栏选择 实例同步
    2. 实例同步 页面,找到需要触发的规则,单击对应 操作 列的 触发
      alt
    3. 在系统弹出的提示框中确认规则信息,单击 确定,触发同步操作。

步骤三:查看同步日志

  1. 镜像仓库控制台 左侧导航栏选择 实例同步

  2. 实例同步 页面,找到目标规则,单击规则名称。

  3. 在规则详情页面,单击 同步日志 页签,查看对应规则的所有同步日志。

    标题标题
    任务 ID实例内唯一的同步任务 ID。

    同步状态

    任务完成状态,同步中、成功、失败。

    说明

    • 若同步状态为 成功,说明同步任务正常触发,且至少成功同步一个 OCI 制品版本。
    • 若同步状态为 失败,表明任务触发失败。可能原因如下:
      • 镜像仓库与外部源仓库网络不通。
      • 外部源仓库地址不存在。
      • 外部源仓库账号密码错误。
      • 外部源仓库密码失效。
      • 目标标准版实例命名空间不存在。
      • 目标标准版实例状态不是 运行中
    任务耗时完成全部同步任务消耗的时间。
    成功比例(成功的 tag 数÷总 tag 数)×100%。
    同步仓库数当前任务需要同步的OCI制品仓库数量。
    触发时间同步任务的触发时间。
  4. 单击任务 ID,可查看该同步任务的详情。展示本次同步任务源实例下的[namespace]/[repo]:tag,目标实例下的[namespace]/[repo]:tag,及同步状态。
    同步状态为 成功 表明源实例的制品成功同步到目标实例;同步状态为 失败 表明源实例的制品未能同步到目标实例。

正则匹配示例

匹配方式匹配目标正则表达式匹配目标名称
v1version-1test-1v2v3
完全匹配仅匹配 v1 版本号。v1----
前缀匹配匹配以 v 开头的所有版本号。^v.*$-
多前缀匹配匹配以 vt 开头的所有版本号。^(v|t).*$
后缀匹配匹配以 -1 结尾的所有版本号。^.*-1$---
多后缀匹配匹配以 12 结尾的所有版本号。^.*(1|2)$-
版本号匹配匹配以 v 开头,连接阿拉伯数字结尾的版本号。^v([0-9.]+)$--