IBM Cloud Docs
从 IBM Cloud Container Registry 中的映像创建作业

从 IBM Cloud Container Registry 中的映像创建作业

创建使用 IBM Cloud® Container Registry中的映像的作业配置。 您可以通过控制台或 CLI 创建任务。

准备工作

是否有兴趣配置项目,以便项目的所有用户都可以在 Container Registry 中存储和访问映像,而不必手动创建注册表私钥? 通过足够的许可权,您可以根据每个位置 (区域) 来配置此缺省注册表访问权。 如果您没有足够的许可权来执行这些操作,那么可以使用此页面来帮助您了解必需的许可权。 请参阅 配置项目范围的设置

使用控制台在 Container Registry 中创建引用映像的作业

通过使用 Code Engine 控制台,创建使用 Container Registry 中的映像的作业配置。

Code Engine 可以自动从帐户中的 Container Registry 名称空间拉取映像。 要从其他 Container Registry 帐户或专用 Docker Hub 帐户拉取映像,请参阅 从专用注册表中的映像创建作业

  1. 打开 Code Engine 控制台。
  2. 选择 让我们开始
  3. 选择工作
  4. 输入任务名称,例如 "myjob
  5. 从可用项目列表中选择一个项目。 您还可以 创建新的。 请注意,您必须具有所选项目才能创建作业。
  6. 选择 容器映像,然后单击 配置映像
  7. 选择容器注册表位置,例如 IBM Registry Dallas
  8. 针对 注册表私钥选择 Code Engine managed secret。 由于此示例使用帐户中 Container Registry 名称空间中的映像,因此 Code Engine 可以自动为您创建和管理注册表私钥。
  9. 在注册表中选择要引用的 Code Engine 作业的现有名称空间和映像名称。 例如,选择 mynamespace 并选择该名称空间中的映像 hello_repo
  10. 选择 标记的值; 例如,latest
  11. 单击完成
  12. 修改环境变量或运行时设置的任何缺省值。 有关这些选项的更多信息,请参阅 用于创建和运行作业的选项
  13. 从“创建作业”页面,单击 创建
  14. 从作业页面中,单击 提交作业 以根据当前配置提交作业。

现在,您已创建作业并 运行作业,您可以从作业页面查看有关作业配置和作业运行的详细信息。

如果要在创建作业之前添加注册表访问权,请参阅 访问容器注册表

使用 CLI 在 Container Registry 中使用映像创建作业

使用 CLI 创建使用 IBM Cloud® Container Registry 中的映像的作业配置,然后使用 job create 命令。 有关选项的完整列表,请参阅 ibmcloud ce job create 命令。

准备工作

  • 设置 Code Engine CLI 环境。
  • 创建和使用项目
  • 在可以使用引用 Container Registry中的映像的 Code Engine 作业之前,必须首先添加对注册表的访问权,以便 Code Engine 可以在作业运行时拉取该映像。 有关访问映像注册表所需的许可权的信息,请参阅 设置映像注册表的权限
  1. 要添加对Container Registry 的访问,请 创建一个 IAM 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 密钥。 以后将无法检索。

  2. 创建 API 密钥后,将注册表访问权添加到 Code Engine。 要使用 CLI 添加对 Container Registry 的访问权,请使用 ibmcloud ce secret create --format registry 命令来创建注册表私钥。 例如,以下命令创建对名为 myregistry 的 Container Registry 实例的注册表访问权。 请注意,尽管在示例命令中指定了 --server--username 选项,但 --server 选项的缺省值为 us.icr.io,当服务器为 us.icr.io 时,--username 选项缺省为 iamapikey

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

    示例输出

    Creating registry secret 'myregistry'...
    OK
    
  3. 在 Container Registry中创建作业配置并引用 hello_repo 映像。 例如,以下 job create 命令将创建 myhellojob 作业以通过使用 myregistry 访问信息来引用 us.icr.io/mynamespace/hello_repo

    ibmcloud ce job create --name myhellojob --image us.icr.io/mynamespace/hello_repo --registry-secret myregistry
    

    此作业的映像名称的格式为 REGISTRY/NAMESPACE/REPOSITORY:TAG,其中 REGISTRYTAG 是可选的。 如果未指定“REGISTRY,则默认为”docker.io。 如果未指定“TAG,则默认为”latest

后续步骤

  • 创建作业后,提交作业以运行该作业。 请参阅 运行作业。 您可以多次运行作业。

  • 运行作业 后,要查看作业和作业运行的详细信息,请参阅 访问作业详细信息

  • 既然已创建作业,请考虑使作业由事件驱动。 通过使用事件预订,您可以通过 定期调度 来触发作业,或者将作业设置为对诸如 文件上载 之类的事件作出反应。

  • 您可以通过以下 任何 方式 更新作业 及其引用的代码,而与创建或先前更新作业的方式无关。

    • 如果您具有容器映像,那么根据 Open Container Initiative(OCI)标准,您只需提供对该映像的引用,这将在创建 (或更新) 作业时指向容器注册表的位置。 您可以从 公共注册表专用注册表 中的映像创建 (或更新) 作业,然后从作业运行中访问引用的映像。

      如果使用 job create 命令创建了作业,并且指定了 --build-source 选项以从本地或存储库源构建容器映像,并且要将作业更改为指向其他容器映像,那么必须首先从作业中除去该构建的关联。 例如,运行 ibmcloud ce job update -n JOB_NAME --build-clear。 从作业中除去构建的关联后,可以更新作业以引用其他映像。

    • 如果从位于 Git 存储库中的源代码开始,那么可以选择让 Code Engine 负责从源构建映像,并使用 单个 操作创建 (或更新) 作业。 在此场景中,Code Engine 将映像上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 从存储库源代码创建作业。 如果想要对映像的构建进行更多控制,那么可以选择在创建 (或更新) 作业并运行作业之前使用 Code Engine 来 构建映像

    • 如果是从本地工作站上的源代码开始,那么可以选择让 Code Engine 负责从源构建映像并使用 单个 CLI 命令创建作业。 在此场景中,Code Engine 将映像上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 使用 CLI 从本地源代码创建作业。 如果要对映像构建进行更多控制,那么可以选择在创建 (或更新) 作业并运行作业之前使用 Code Engine 来 构建映像

    例如,您可以选择让 Code Engine 在为作业开发源时处理本地源的构建。 然后,在映像成熟后,可以更新作业以引用所需的特定映像。 您可以根据需要重复此过程。

    运行更新后的作业时,引用的容器映像的最新版本将用于作业运行,除非为该映像指定了标记。 如果为映像指定了标记,那么标记的映像将用于作业运行。

要查找更多代码示例吗? 请查看 IBM Cloud Code Engine GitHub 存储库的样本