IBM Cloud Docs
访问容器注册表

访问容器注册表

IBM Cloud® Code Engine 使用的图像通常存储在一个注册表中,该注册表既可以供公众访问(公共注册表),也可以为一小部分用户设置有限的访问权限(私人注册表)。

容器注册表或注册表是存储容器映像的服务。 例如,IBM Cloud Container Registry 和 Docker Hub 是容器注册表。 容器注册表可以是公用或专用的。 公共容器注册表不需要凭证即可访问。 相反,访问专用注册表需要凭证。

Code Engine 需要访问容器注册表以完成以下操作:

  • 检索 (或 "拉取") 容器映像以运行应用程序或作业
  • 将新创建的容器映像存储为映像构建的输出
  • 从本地源运行构建时存储和检索本地文件

Code Engine 处理系统与注册表之间交互的许多底层详细信息。

要从注册表中拉取映像,Code Engine 使用称为 imagePullSecret 的特殊类型的 Kubernetes 私钥。 此映像拉取私钥存储了用于访问容器注册表的凭证。 使用 Code Engine 添加对容器注册表的访问权以拉取映像时,您将创建映像拉取私钥。 有关映像拉取私钥的更多信息,请参阅 Kubernetes 文档

映像注册表的类型

映像通常存储在可由公共(公共注册表)访问的注册表中,或者存储在针对一小组用户设置有限访问权(专用注册表)的注册表中。

公共注册表 (例如公共 Docker Hub) 可用于开始使用 Docker 和 Code Engine 来创建第一个应用程序或作业。 但在涉及企业工作负载时,请使用专用注册表,如 IBM Cloud Container Registry 中提供的注册表,以保护您的镜像不被未经授权的用户使用。 对于专用注册表,请使用注册表私钥来确保凭证可用于访问专用注册表。

公共和私人图像登记处类型
注册表 描述
IBM Cloud Container Registry 通过此类型的注册表,您可以在 IBM Cloud Container Registry 中设置自己的安全映像存储库,您可以在用户之间安全地存储和共享映像。
通过 IBM Cloud Container Registry,您可以
-管理对帐户中映像的访问权。
-使用 IBM 提供的映像和样本应用程序 (例如 IBM Liberty) 作为基本映像,并向其添加您自己的应用程序代码。
其他任何专用注册表

通过添加访问权将任何现有专用注册表连接到 Code Engine。 添加访问权限可安全地将注册表 URL 和凭据保存在 Kubernetes 保密文件中。
使用私有注册表,您可以

  • 使用现有的私有注册表,与其来源无关( Docker Hub、组织自有注册表或其他私有云注册表)。
公共 Docker Hub 在您的Code Engine应用程序或工作中,使用此类注册表可直接从DockerHub 提取现有的公共映像。

重要:

  • 这种注册表类型可能无法满足贵组织的安全要求,如访问管理、漏洞扫描或应用程序隐私。
    -当您从DockerHub 提取映像与Code Engine 中的应用程序或作业一起使用时,请注意免费计划(匿名)用户的Docker速率限制。 如果收到 "429 错误,表明您已达到拉速限制,您可能会遇到拉速限制。 要提高费率限制,您可以将账户升级为Docker"Pro或 "Team订阅。

使用公共DockerHub,你可以:
--创建应用程序或作业时可直接引用这些镜像,无需额外设置。
--包括各种开源应用程序。

注册表私钥的类型

要访问注册表中的映像,Code Engine 使用下列其中一种类型的注册表私钥。

  • Code Engine 受管私钥-如果注册表使用帐户中的 IBM Cloud Container Registry 名称空间,那么可以让 Code Engine 为您创建和管理注册表私钥。 在控制台中,此自动创建的注册表私钥称为 Code Engine managed secret。 在 CLI 中,自动创建的注册表私钥的名称格式为 ce-auto-icr-private-<region>
  • 用户管理的私钥-这是您创建和管理的私钥。 您可以 使用 API 密钥从帐户访问映像,也可以将访问令牌用于您选择的容器注册表; 例如,Docker Hub。 对于这种情况,控制台中列出的注册表私钥是注册表私钥的名称。

如果注册表是公共注册表,并且不需要凭证; 例如,icr.io/codeengine 或 Docker Hub 公用中的 Code Engine 样本映像,那么您不需要注册表私钥。 对于此情况,控制台中列出的注册表私钥为 None

设置映像注册表的权限

如果您的注册表是公共注册表,那么不必设置用于拉取映像的权限。 请注意,在开始使用 Code Engine 时从公共注册表拉取映像是可接受的。 在涉及企业工作负载时,请使用专用注册表。

我需要哪些权限?

要确定所需的权限,请考虑以下情况:

  • 部署应用程序或运行作业时,Code Engine 可以自动访问您自己帐户中的映像。

  • 如果要从共享帐户,其他 IBM Cloud 帐户或专用 Docker 帐户访问映像,那么必须为您分配正确的访问权限。

  • 当您部署应用程序或运行作业,并且注册表使用帐户中的 IBM Cloud Container Registry 名称空间时,只要您的帐户具有下表中描述的必需许可权,就可以让 Code Engine 自动为您创建和管理注册表私钥。

    • 在控制台中,此注册表私钥称为 Code Engine managed secret。 当您使用 配置映像指定构建详细信息 工作流程来使用 Code Engine构建映像时,此选项可用。
    • 在 CLI 中,此注册表私钥的格式为 ce-auto-icr-private-<region>。 当您指定 --build-source 选项时,会自动创建此注册表私钥,但不会为 --registry-secret 选项提供 app createapp updatejob createjob update 命令。
图像登记处的访问权限
操作 IAM 服务访问权 描述
拉取映像 Reader 服务访问权 将映像部署为应用程序或作业时,必须从注册表中拉取该映像。 要拉取映像,您需要读访问权。 如果注册表是公共注册表,那么您已具有对映像的读访问权。 如果注册表是专用的,那么需要注册表私钥。
推送图像 Reader 和 服务访问 Writer 构建源代码时,必须将映像推送到注册表。 要将映像推送到注册表,您必须具有读写访问权,并且必须具有注册表私钥。
创建名称空间 ReaderWriterManager 服务访问权 仅 IBM Cloud Container Registry支持此操作。
Code Engine 自动创建注册表私钥 Administrator 平台访问权
ReaderWriterManager 服务访问权
仅 IBM Cloud Container Registry支持此操作。

我可以使用服务标识吗?

是,您可以创建服务标识并为其分配权限。 请注意,当您自动创建对 IBM Cloud Container Registry的访问权时,Code Engine UI 也会自动创建服务标识。 请勿删除此服务标识,因为您将失去对注册表中映像的访问权。

我能否访问其他注册表中的映像?

是的! 以下是操作方式

我能否限制对特定区域注册表或甚至单个名称空间的拉取访问权?

可以,可以编辑服务标识的现有 IAM 策略,以将读取者服务访问角色限制为只能访问该区域注册表或注册表资源(例如,名称空间)。 必须为 IBM Cloud 启用 IBM Cloud Container Registry IAM 策略后,才能定制注册表 IAM 策略。

从公共帐户访问映像

如果映像存储在公共存储库 (例如公共 Docker Hub) 中,那么只需在部署应用程序或运行作业时直接引用该映像即可。 请注意,在公共注册表中存储映像对于开始使用应用程序和作业非常有用,请将企业映像存储在专用注册表中。

从控制台访问您自己帐户中的映像

如果要从您拥有或管理的帐户访问 Code Engine,那么在从控制台创建或更新应用程序,作业或构建时,Code Engine 可以自动将映像推送到帐户中的 IBM Cloud Container Registry 名称空间以及从该名称空间中提取映像。Code Engine 甚至可以在推送映像时为您创建名称空间。 有关更多信息,请参阅以下主题。

使用 API 密钥从帐户访问映像

如果要使用 CLI 访问 Code Engine,那么必须首先创建 IAM API 密钥,然后在 Code Engine中 将 IAM API 密钥另存为注册表访问权

以下步骤将创建一个 API 密钥,用于存储用户 ID 的凭据。 与使用用户 ID 不同,您可能希望为服务 ID 创建一个 API 密钥,该服务 ID 的 IBM Cloud IAM 服务访问策略为 IBM Cloud Container Registry。 如果选择对用户标识进行认证,请确保该用户是功能标识或计划用户离开的情况,以便 Code Engine 仍可访问注册表。

从控制台创建 API 密钥

要从控制台创建 IBM Cloud IAM API 密钥,

  1. 启动 Access(IAM)概述

  2. 选择 API 密钥

  3. 单击创建 IBM Cloud API 密钥

  4. 输入 API 密钥的名称和可选描述,然后单击“创建”。

  5. 复制 API 密钥或单击“下载”以保存该密钥。

    您将无法再次看到此 API 密钥,因此请确保将其记录在安全位置。

既然您已创建 API 密钥,请 将其另存为注册表访问权

使用 CLI 创建 API 密钥

要使用 CLI 创建“IBM CloudIAM API 密钥,请运行”iam api-key-create 命令。 例如,要创建一个名为 "cliapikey、描述名为 "My CLI API key 的 API 密钥,并将其保存到名为 "key_file 的文件中,请运行以下命令:

ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file

如果选择不将密钥保存到文件中,那么必须记录创建密钥时显示的 API 密钥。 以后将无法检索。

既然您已创建 API 密钥,请 将其另存为注册表访问权

访问共享帐户中的映像

要从共享帐户中的 IBM Cloud Container Registry 访问映像,必须为您分配 适当的权限

如果计划从共享帐户部署应用程序和运行作业,那么 Code Engine 可以在部署应用程序或创建作业时为您拉取或推送映像。

如果要将映像从共享帐户拉取到您自己的帐户,那么您必须 有权访问 IBM Cloud Container Registry

访问其他帐户中的映像

您可以为用户或服务 ID 分配 IBM Cloud IAM 访问策略,以限制特定注册表映像命名空间或操作(如推送或拉取)的权限。 然后,创建 API 密钥并将这些注册表凭证存储在 Code Engine中。

例如,要访问其他 IBM Cloud 账户中的图像,可 创建一个 API 密钥,用于存储该账户中用户或服务 ID 的 IBM Cloud Container Registry 凭据。 然后,在 Code Engine中,使用该密钥在帐户中 创建访问权

访问专用 Docker Hub 帐户中的映像

要访问专用 Docker Hub 帐户中的映像,请通过提供密码或访问令牌来创建注册表访问权。 通过使用访问令牌,您可以更轻松地授予和撤销对 Docker Hub 帐户的访问权,而无需更改密码。 有关访问令牌和 Docker Hub 的更多信息,请参阅 管理访问令牌

在决定是直接使用密码还是创建访问令牌之后,创建注册表访问权

将注册表访问权添加到 Code Engine

要设置对不同 IBM Cloud 帐户中的 IBM Cloud Container Registry 的访问权,要从专用 Docker 中心帐户中提取映像,或者要使用 Code Engine CLI 来提取或推送映像,您可以使用 IBM API 密钥Docker Hub 密码或访问令牌,通过 Code Engine 创建注册表访问权,以存储您的认证密钥或令牌。

从控制台添加注册表访问权

开始之前,请 创建项目

  1. 在项目处于 活动 状态后,在 Code Engine "项目" 页面上单击项目的名称。
  2. 在“组件”页面中,单击 私钥和配置映射
  3. 从“私钥和配置映射”页面中,单击 创建 以创建私钥。
  4. 从“创建私钥或配置映射”页面,完成以下步骤:
    1. 选择 注册表私钥,然后单击 下一步
    2. 提供名称; 例如,mysecret-registry
    3. 指定此私钥的目标注册表,例如 IBM Cloud Container Registry 或 Docker Hub。
    4. 指定注册表的位置。
    5. 指定用户名。 如果此私钥适用于 IBM Cloud Container Registry,那么用户名为 iamapikey。 如果此私钥适用于 Docker Hub,那么它是您的 Docker 标识。
    6. 输入用户名的凭证。 对于 IBM Cloud Container Registry,请使用 IAM API 密钥。 对于 Docker Hub,可以使用 Docker Hub 密码或 访问令牌。 对于其他目标注册表,请指定用户名的密码或 API 密钥。
    7. 单击“创建”创建密文。

现在,您的私钥是从控制台创建的,请转至“私钥和配置映射”页面以查看已定义的私钥和配置映射的列表。 您可以应用过滤器来定制列表以满足您的需求。

在创建应用程序或作业时,或者在构建映像时,可以添加对容器注册表的访问权。 单击 配置映像 并指定要运行的容器映像,包括用于存储映像的注册表以及用于检索映像的 注册表访问权

使用 CLI 添加注册表访问权

从 CLI 版本 1.42.0 开始,在 CLI 中定义和处理秘密将统一到 secret 命令组。 请参阅 ibmcloud ce secret 命令。 使用 --format 选项指定秘密类别,如 basic_auth, generic, hmac, ssh, tlsregistry。 虽然可以继续使用 registry 命令组的同时,还可以利用统一的 secret 命令组的优势。 要创建一个访问容器注册表的秘密,请使用 ibmcloud ce secret create --format registry 命令。 要了解在 Code Engine 中处理秘密的更多信息,请参阅 处理秘密

要使用 CLI 添加 IBM Cloud Container Registry 或 Docker Hub 访问权,请使用 secret create --format registry 命令。 该命令需要注册表秘密的名称、注册表服务器的 URL 以及访问注册表服务器的用户名和密码信息,还允许其他可选参数。 有关选项的完整列表,请参阅 ibmcloud ce secret create 命令。

例如,以下命令将创建对 us.icr.io 注册表服务器上名为 myregistry 的 IBM Cloud Container Registry 实例的注册表访问权:

ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password API_KEY

示例输出

Creating registry secret 'myregistry'...
OK

下表概述了此示例中与 secret create --format registry 命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅 ibmcloud ce secret create 命令。

命令描述
选项 描述
--name 注册表私钥的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母数字字符开头和结尾。
-名称必须小于或等于 253 个字符,并且可以包含小写字母,数字,句点 (.) 和连字符 (-)。
--server 输入注册表服务器的 URL。 对于 Container Registry,服务器名称为 <region>.icr.io。 例如,us.icr.ioDocker Hub 的值为 https://index.docker.io/v1/
--username 输入访问注册表服务器的用户名。 对于 Container Registry,它是 iamapikey。 对于 Docker Hub,它是您的 Docker 标识。
--password 输入密码。 对于 Container Registry,密码是 API 密钥。 对于 Docker Hub,可以使用 Docker Hub 密码或 访问令牌

授权使用服务标识访问 Container Registry

必须先授权访问另一帐户中的服务标识,然后才能添加对该服务标识的访问权。

创建服务标识时,可以限制对区域 IBM Cloud Container Registry 的访问权,甚至限制对该 IBM Cloud Container Registry 帐户中的特定名称空间的访问权。

使用控制台中的服务标识授权访问 Container Registry

要从 IBM Cloud Container Registry拉取或推送映像,必须创建服务标识,为服务标识创建访问策略,然后创建 API 密钥以存储凭证。

步骤 1 创建或标识服务标识并将其授权给 IBM Cloud Container Registry 服务

  1. 启动 Access(IAM)概述
  2. 选择服务标识
  3. 如果您有要使用的服务标识,请选择该标识。 否则,请选择 创建,输入名称和描述,然后单击 创建
  4. 从“服务标识”页面的 访问策略 部分中,选择 分配访问权
  5. 分配服务标识附加访问权 部分中,
    1. 针对访问类型选择 Container Registry。 单击下一步
    2. 选择访问类型: 所有资源特定资源。 如果指定 特定资源,那么可以根据资源组,地理位置,区域,资源类型,资源标识或资源名称添加属性以进一步限制访问权。 如果选择特定资源组,请确保为 资源组 访问权选择 查看者 访问权。 单击下一步
    3. 角色和操作 部分中,选择要授予的访问权类型。 如果计划仅将图像用于应用程序和作业,请选择 读者。 如果要将源代码和映像推送到 Container Registry,那么还请选择 写入者。 点击回顾
    4. 单击添加,然后单击分配

步骤 2 启用 Container Registry 发现

要允许 Code Engine 控制台自动发现容器注册表,必须向 IAM Identity Service认证服务标识。

  1. 从“服务标识”页面的 访问策略 部分中,选择 分配访问权
  2. 分配服务标识附加访问权 部分中,
    1. 针对访问类型选择 IAM Identity Service。 单击下一步
    2. 为资源作用域选择 特定资源。 选择 资源类型 作为属性类型,保留 字符串等于 作为运算符并输入 serviceid 作为值。 单击添加条件
    3. 选择 资源标识 作为属性类型,保留 字符串等于 作为运算符,并放置服务标识的标识。 您可以在服务 ID 的详细信息页面或配置时在浏览器 URL 中找到您的服务 ID。 单击 下一步
    4. 在“角色和操作”部分中,选择“平台 操作员”访问权。 点击查看
    5. 单击添加,然后单击分配

步骤 3 为服务 ID 创建 API 密钥

为服务 ID 创建 API 密钥。

  1. 从“服务标识”页面中,选择 API 密钥,然后选择 创建

  2. 输入 API 密钥的名称和可选描述,然后单击“创建”。

  3. 复制 API 密钥或单击“下载”以保存该密钥。

    您将无法再次看到此 API 密钥,因此请确保将其记录在安全位置。

现在,您已为服务标识和 API 密钥创建了访问策略,您可以 添加对 Code Engine 的访问权,以从容器注册表中提取映像。

使用 CLI 授权访问 Container Registry

要从其他帐户中的 IBM Cloud Container Registry 拉取映像,必须创建服务标识,为服务标识创建访问策略,然后创建 API 密钥以存储凭证。

  1. 为您的项目创建 IBM Cloud IAM 服务 ID,该 ID 用于图像拉取秘钥中的 IAM 策略和 API 密钥凭证。iam service-id-create 命令创建一个 IAM 服务 ID。 请务必为服务 ID 提供描述,以帮助您以后检索服务 ID,例如包含项目名称。 有关 iam service-id-create 命令及其选项的完整列表,请参阅 ibmcloud iam service-id-create 命令。

    例如,以下命令使用描述 Service ID for IBM Cloud Container Registry in Code Engine project myproject 创建名为 codeengine-myproject-id 的服务标识:

    ibmcloud iam service-id-create codeengine-myproject-id --description "Service ID for IBM Cloud Container Registry in Code Engine project my proj"
    
  2. 使用 iam service-policy-create 命令为服务标识创建定制 IBM Cloud IAM 策略,以授予对 IBM Cloud Container Registry 的访问权。 有关 iam service-policy-create 命令及其选项的完整列表,请参阅 ibmcloud iam service-policy-create 命令。

    例如,以下命令为具有 Reader 角色的 codeengine-myproject-id 服务标识创建策略:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Reader --service-name container-registry
    

    下表概述了此示例中与 iam service-policy-create 命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅 ibmcloud iam service-policy-create 命令。

    iam 服务策略创建命令组件
    选项 描述
    <service_ID> 必需。 替换为先前创建的 codeengine-<project_name>-id 服务标识。
    --roles <service_access_role> 必需。 输入要将服务标识访问权的作用域限定到的 IBM Cloud Container Registry 服务访问角色。 可能的值为 Reader(读取者)、Writer(写入者)和 Manager(管理者)。 如果要拉取映像,那么 Reader 访问权已足够。 有关更多信息,请参阅 设置映像注册表的权限
    --service-name <container-registry> 必需。 输入 container-registry 以创建 IBM Cloud Container Registry的 IAM 策略。
  3. 创建定制服务策略以允许访问 iam-identity 服务,以便 Code Engine 可以使用 iam service-policy-create 命令检索服务标识的 API 密钥。

    例如,为具有 Operator 角色的 codeengine-myproject-id 服务标识创建策略:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Operator --service-name iam-identity
    

    下表概述了此示例中与 iam service-policy-create 命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅 ibmcloud iam service-policy-create 命令。

    iam 服务策略创建命令组件
    选项 描述
    <service_ID> 必需。 替换为先前创建的 codeengine-<project_name>-id 服务标识。
    --roles <platform_access_role> 必需。 输入您要将服务 ID 的访问范围扩展到的平台访问角色。 可能的值为 AdministratorEditorOperatorViewer。 您的服务标识需要 Operator 或更高版本。
    --service-name <iam-identity> 必需。 输入 iam-identity 以创建 IAM 标识服务的 IAM 策略。
  4. 使用 iam service-api-key-create 命令为服务标识创建 API 密钥。 有关 iam service-api-key-create 命令及其选项的完整列表,请参阅 ibmcloud iam service-api-key-create 命令。 将 API 密钥命名为与您的服务 ID 相似的名称,并包含您之前创建的服务 ID,codeengine-<project_name>-id。 请确保为 API 密钥提供描述,以帮助您日后检索该密钥。

    例如,以下命令为 codeengine-myproject-id 服务标识创建名为 codeengine-myproject-key 的密钥,其描述为 API key for service ID codeengine-myproject-id for Code Engine myproject:

    ibmcloud iam service-api-key-create codeengine-myproject-key codeengine-myproject-id --description "API key for service ID codeengine-myproject-id for Code Engine myproject"
    

    示例输出

    Please preserve the API key! It cannot be retrieved after it's created.
    
    Name          codeengine-myproject-key
    Description   API key for service ID codeengine-myproject-id for Code Engine myproject
    Bound To      crn:v1:bluemix:public:iam-identity::a/1bb222bb2b33333ddd3d3333ee4ee444::serviceid:ServiceId-ff55555f-5fff-6666-g6g6-777777h7h7hh
    Created At    2019-02-01T19:06+0000
    API Key       i-8i88ii8jjjj9jjj99kkkkkkkkk_k9-llllll11mmm1
    Locked        false
    UUID          ApiKey-222nn2n2-o3o3-3o3o-4p44-oo444o44o4o4
    

    您将无法再次看到此 API 密钥,因此请确保将其记录在安全位置。

    现在,您已针对服务标识和创建的 API 密钥实施了访问策略,您可以 添加对 Code Engine 的访问权,以从容器注册表中提取映像。

控制对 Code Engine 工作负载的 Container Registry 的访问

假设您希望在 Code Engine 拉取映像时控制对 IBM Cloud Container Registry 的访问。 例如,您希望控制对特定 IP 地址的 Container Registry 的访问权。 请考虑以下方法。

  • 使用 基于上下文的限制。 通过使用基于上下文的限制,如果 Code Engine 项目的 IP 地址发生更改,那么您无需更改访问权。 您可以将对 Container Registry 的访问权限制为网络区域,其中您的网络区域包含 Code Engine 以及需要访问注册表的任何内容。

  • 禁用对 IBM Cloud Container Registry 的公共访问权,并确保 Code Engine 使用专用端点而不是公共端点。 请参阅 保护与 Container Registry的连接

  • 要控制特定 IP 范围的访问,请使用 API 端点来访存特定 Code Engine 项目的 IP 地址。 需要注意的是,这些 IP 地址可能会发生更改,发生这种情况时必须采取相应的步骤。 请参阅 Code Engine 公共和专用 IP 地址如何将 Code Engine 应用程序添加到允许列表?

注册表中映像的注意事项

用于应用程序或作业的映像的名称必须为下列其中一种格式。

  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY:TAG,其中 REGISTRYTAG 是可选的。 如果未指定 REGISTRY,则默认为 docker.io。 如果未指定 TAG,请勿包含冒号 (:)。TAG 的缺省值为 latest
  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY@IMAGEID,其中 REGISTRY 是可选的。 如果未指定 REGISTRY,那么缺省值为 docker.ioibm 作为 Docker 组织。
图像名称规则
组件 允许的字符 长度 其他规则
REGISTRY a-zA-Z0-9 -_. --__ 1-253 (0-127Periods)(label:1-63,noDashOnEnd)
NAMESPACE a-z 0-9 -_ --__ 4-30 (start/end with letterOrNumber)
DOCKERUSERorDOCKERORG a-z 0-9 4-30
REPOSITORY a-z 0-9 -_. / 2-255 (start/end with letterOrNumber)
TAG a-zA-Z0-9 -_. --__.. 0-128 (NOT start with periodOrDash)
IMAGEID a-z 0-9 : (startwith sha256: noOtherColon)

映像名称的部分必须满足以下条件。

  • REGISTRY 不得超过 253 个字符,并且可以包含小写或大写字母,数字,句点 (.),连字符 (-) 和下划线 (_)。请勿使用短划线 (.) 作为最后一个字符。 请勿使用超过 127 个句点 (.),它们之间的标签长度可以在 1 到 63 个字符之间。
  • NAMESPACE 必须介于 4 到 30 个字符之间,并且必须以小写字母或数字开头和结尾。NAMESPACE 可以包含小写字母数字字符,连字符 (-) 和下划线 (_)。
  • DOCKERUSERorDOCKERORG 可用于 Docker 注册表,而不是 NAMESPACE。 指定 Docker 用户名或 Docker 组织。 Docker 用户名和组织必须介于 4 到 30 个字符之间,并且仅包含小写字母数字字符或数字。
  • REPOSITORY 必须介于 2 到 255 个字符之间,并且必须以小写字母或数字开头和结尾。REPOSITORY 可以包含小写字母数字字符,正斜杠 (/),句点 (.),连字符 (-) 和下划线 (_)。
  • TAG 必须介于 0 到 128 个字符之间,并且可以包含小写或大写字母,数字,句点 (.),连字符 (-) 和下划线 (_)。TAG 不得以句点或短划线开头。 如果不包含 TAG,那么也不包含冒号。
  • IMAGEIDsha256: 为前缀,并且可以包含小写字母和数字。