从专用注册表中的映像创建作业
创建一个使用私有注册表(例如私有 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 代码库中的示例。