从专用注册表中的映像创建作业
创建在专用注册表 (例如专用 Docker Hub) 中使用映像的作业。 您可以从控制台或使用 CLI 创建作业。
准备工作
- 要从专用注册表中拉取映像,必须首先创建专用注册表。 例如,要创建专用 Docker Hub 注册表,请参阅 Docker Hub 文档。
- 创建专用注册表后,将映像推送到该注册表。
- 您还可以设置访问令牌。 通过使用访问令牌,您可以更轻松地授予和撤销对 Docker Hub 帐户的访问权,而无需更改密码。 有关访问令牌和 Docker Hub 的更多信息,请参阅 管理访问令牌。
使用控制台创建引用专用注册表中的映像的作业
使用 Code Engine 控制台在专用注册表中创建使用映像的作业配置。
在可以使用引用专用注册表中的映像的 Code Engine 作业之前,必须首先添加对注册表的访问权,以便 Code Engine 可以在作业运行时拉取该映像。
- 打开 Code Engine 控制台。
- 选择 让我们开始。
- 选择 作业。
- 输入作业的名称; 例如,
myjob
。 - 从可用项目列表中选择项目。 您还可以 创建新的。 请注意,您必须具有所选项目才能创建作业。
- 选择 容器映像,然后单击 配置映像。
- 对于 注册表服务器,请输入
docker.io
。 - 对于 注册表私钥,选择 创建注册表私钥。
- 从“创建注册表私钥”页面中,选择注册表源。 例如,Docker Hub。
- 从“创建注册表私钥”页面,输入用户名。 对于 Docker Hub,它是您的 Docker 标识。
- 从“创建注册表密钥”页面,输入密码。 对于 Docker Hub,可以使用 Docker Hub 密码或访问令牌。 有关访问令牌和 Docker Hub 的更多信息,请参阅 管理访问令牌。
- 单击 创建 以添加 Code Engine的注册表私钥。
- 在“配置映像”页面中,将列出已添加的注册表私钥。 选择映像的注册表密钥。
- 在 Docker Hub 中选择要引用的 Code Engine 作业的名称空间和映像名称。 例如,选择
mynamespace
并选择该名称空间中的映像testjob
。 - 选择 标记的值; 例如,
latest
。 - 单击完成。 您在注册表中选择了要从作业引用的映像。
- 修改环境变量或运行时设置的任何缺省值。 有关这些选项的更多信息,请参阅 用于创建和运行作业的选项。
- 从“创建作业”页面,单击 创建。
- 创建作业后,将打开特定作业的作业页面。 从作业页面中,单击 提交作业 以根据当前配置提交作业。
要在创建作业配置 之前 添加注册表访问权,请参阅 访问容器注册表。
使用 CLI 从专用注册表创建具有映像的作业
要使用 CLI 从专用注册表创建具有映像的作业配置,请使用 job create
命令。 此命令需要名称和映像,并且还允许其他可选参数。 有关选项的完整列表,请参阅 ibmcloud ce job create
命令。
准备工作
- 设置 Code Engine CLI 环境。
- 创建和使用项目。
- 在可以使用引用专用注册表中的映像的 Code Engine 作业之前,必须先添加对该注册表的访问权,拉取该映像,然后创建作业配置。
-
要从专用注册表中拉取映像,必须首先创建专用注册表。 例如,要创建专用 Docker Hub 注册表,请参阅 Docker Hub 文档。 创建专用注册表后,将映像推送到该注册表。 您还可以设置访问令牌。 通过使用访问令牌,您可以更轻松地授予和撤销对 Docker Hub 帐户的访问权,而无需更改密码。 有关访问令牌和 Docker Hub 的更多信息,请参阅 管理访问令牌。
-
添加对专用注册表的访问权以拉取映像。 要使用 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
-
在专用 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
,其中 REGISTRY
和 TAG
是可选的。 如果未指定 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 存储库的样本。