访问容器注册表

IBM Cloud® Code Engine 使用的镜像通常存储在注册表中,该注册表可以对公众开放(公共注册表),也可以设置为仅限一小部分用户访问(私有注册表)。

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

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

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

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

为了从注册表中提取镜像,Code Engine 会使用一种特殊的 Kubernetes 密钥,称为 imagePullSecret。 此映像拉取私钥存储了用于访问容器注册表的凭证。 当您使用 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 中心

使用此类注册表,可在您的 Code Engine 应用程序或作业中直接从 Docker Hub拉取现有的公共镜像。

重要提示:

  • 此注册表类型可能无法满足您组织的安全要求,例如访问管理、漏洞扫描或应用隐私。
  • 当您从 Docker Hub 拉取镜像,以便在 Code Engine 中用于应用或作业时,请注意免费计划(未经过身份验证)用户需遵守 Docker 速率限制 中的规定。 如果收到 "429 错误,表明您已达到拉速限制,您可能会遇到拉速限制。 若要 提高速率限制,您可以将账户升级为“Docker”ProTeam 订阅计划。

借助公共 Docker Hub,您可以:

  • 创建应用或作业时可直接引用这些镜像,无需额外配置。
  • 包含各种开源应用程序。

注册表私钥的类型

要访问注册表中的映像,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,您不妨为一个具有 IBM Cloud IAM 服务访问策略(该策略允许访问 IBM Cloud Container Registry )的服务 ID 创建一个 API 密钥。 如果您选择对用户 ID 进行身份验证,请确保该用户是功能性 ID,或者针对用户离职的情况做好相应规划,以确保 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

访问其他帐户中的映像

您可以将 IBM Cloud 的IAM访问策略分配给用户或服务ID,以限制对特定注册表镜像命名空间或操作(例如推送或拉取)的权限。 然后,创建一个 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.io。 对于 Docker 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 获取图片,您必须创建一个服务 ID,为该服务 ID 创建访问策略,然后创建一个 API 密钥来存储您的凭据。

  1. IBM Cloud 使用 iam service-id-create 命令。 请务必为服务 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: 为前缀,并且可以包含小写字母和数字。