IBM Cloud Docs
从专用注册表中的映像创建作业

从专用注册表中的映像创建作业

创建在专用注册表 (例如专用 Docker Hub) 中使用映像的作业。 您可以从控制台或使用 CLI 创建作业。

准备工作

  • 要从专用注册表中拉取映像,必须首先创建专用注册表。 例如,要创建专用 Docker Hub 注册表,请参阅 Docker Hub 文档
  • 创建专用注册表后,将映像推送到该注册表
  • 您还可以设置访问令牌。 通过使用访问令牌,您可以更轻松地授予和撤销对 Docker Hub 帐户的访问权,而无需更改密码。 有关访问令牌和 Docker Hub 的更多信息,请参阅 管理访问令牌

使用控制台创建引用专用注册表中的映像的作业

使用 Code Engine 控制台在专用注册表中创建使用映像的作业配置。

在可以使用引用专用注册表中的映像的 Code Engine 作业之前,必须首先添加对注册表的访问权,以便 Code Engine 可以在作业运行时拉取该映像。

  1. 打开 Code Engine 控制台。
  2. 选择 让我们开始
  3. 选择 作业
  4. 输入作业的名称; 例如,myjob
  5. 从可用项目列表中选择项目。 您还可以 创建新的。 请注意,您必须具有所选项目才能创建作业。
  6. 选择 容器映像,然后单击 配置映像
  7. 对于 注册表服务器,请输入 docker.io
  8. 对于 注册表私钥,选择 创建注册表私钥
  9. 从“创建注册表私钥”页面中,选择注册表源。 例如,Docker Hub
  10. 从“创建注册表私钥”页面,输入用户名。 对于 Docker Hub,它是您的 Docker 标识。
  11. 从“创建注册表密钥”页面,输入密码。 对于 Docker Hub,可以使用 Docker Hub 密码或访问令牌。 有关访问令牌和 Docker Hub 的更多信息,请参阅 管理访问令牌
  12. 单击 创建 以添加 Code Engine的注册表私钥。
  13. 在“配置映像”页面中,将列出已添加的注册表私钥。 选择映像的注册表密钥。
  14. 在 Docker Hub 中选择要引用的 Code Engine 作业的名称空间和映像名称。 例如,选择 mynamespace 并选择该名称空间中的映像 testjob
  15. 选择 标记的值; 例如,latest
  16. 单击完成。 您在注册表中选择了要从作业引用的映像。
  17. 修改环境变量或运行时设置的任何缺省值。 有关这些选项的更多信息,请参阅 用于创建和运行作业的选项
  18. 从“创建作业”页面,单击 创建
  19. 创建作业后,将打开特定作业的作业页面。 从作业页面中,单击 提交作业 以根据当前配置提交作业。

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

使用 CLI 从专用注册表创建具有映像的作业

要使用 CLI 从专用注册表创建具有映像的作业配置,请使用 job create 命令。 此命令需要名称和映像,并且还允许其他可选参数。 有关选项的完整列表,请参阅 ibmcloud ce job create 命令。

准备工作

  • 设置 Code Engine CLI 环境。
  • 创建和使用项目
  • 在可以使用引用专用注册表中的映像的 Code Engine 作业之前,必须先添加对该注册表的访问权,拉取该映像,然后创建作业配置。
  1. 要从专用注册表中拉取映像,必须首先创建专用注册表。 例如,要创建专用 Docker Hub 注册表,请参阅 Docker Hub 文档。 创建专用注册表后,将映像推送到该注册表。 您还可以设置访问令牌。 通过使用访问令牌,您可以更轻松地授予和撤销对 Docker Hub 帐户的访问权,而无需更改密码。 有关访问令牌和 Docker Hub 的更多信息,请参阅 管理访问令牌

  2. 添加对专用注册表的访问权以拉取映像。 要使用 CLI 添加对专用注册表的访问权,请使用 ibmcloud ce secret create --format registry 命令来创建注册表私钥。 例如,以下命令将创建对位于 https://index.docker.io/v1/ 的名为 privatedocker 的 Docker Hub 注册表的注册表访问权,并使用您的用户名和密码。

    ibmcloud ce secret create --format registry --name privatedocker --server https://index.docker.io/v1/ --username <Docker_User_Name> --password <Password>
    

    示例输出

    Creating registry secret 'privatedocker'...
    OK
    
  3. 在专用 Docker Hub 注册表中创建作业配置并引用映像。 例如,创建 mytestjob 作业配置以通过使用 privatedocker 访问信息来引用 docker.io/privaterepo/testjob

    ibmcloud ce job create --name mytestjob --image docker.io/privaterepo/testjob --registry-secret privatedocker
    

此作业的映像名称的格式为 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 存储库的样本