从专用注册表中的映像部署应用程序工作负载

使用使用专用注册表 (例如专用 Docker Hub) 中的映像的 Code Engine 部署应用程序。 您可以从控制台或使用 CLI 创建应用程序。

准备工作

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

使用控制台部署在专用注册表中引用映像的应用程序

使用 Code Engine 控制台在专用注册表中部署使用映像的应用程序。

在可以使用引用专用注册表中的映像的 Code Engine 应用程序之前,必须先添加对该注册表的访问权,拉取该映像,然后进行部署。

  1. 打开 Code Engine 控制台。
  2. 选择 让我们开始
  3. 选择应用程序
  4. 输入应用程序的名称,例如 helloapp。 为您的应用程序取一个在项目中独一无二的名称。
  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 并选择该名称空间中的映像 hello_repo
  15. 选择 标记的值; 例如,latest
  16. 单击完成。 您在注册表中选择了要从应用程序引用的映像。
  17. 修改应用程序的任何运行时设置或环境变量。 有关这些选项的更多信息,请参阅 用于应用程序端点可视性的选项用于部署应用程序的选项
  18. 在“创建应用程序”页面中,单击 创建
  19. 在应用程序状态更改为 Ready 后,可以测试应用程序。 单击 测试应用程序,然后在“测试应用程序”窗格中单击 发送请求。 要在网页中打开应用程序,请单击应用程序 URL

现在,您已部署应用程序,可以查看有关应用程序修订版和任何正在运行的实例的信息以及配置详细信息。

如果要在创建应用程序之前添加注册表访问权,请参阅 添加对专用容器注册表的访问权

使用 CLI 从专用注册表部署具有映像的应用程序

使用 CLI 通过 ibmcloud ce app create 命令部署在容器注册表中使用映像的应用程序。

准备工作

在可以使用引用专用注册表中的映像的 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 注册表中创建应用程序并引用映像。 例如,创建 myhelloapp 应用程序以通过使用 privatedocker 访问信息来引用 docker.io/privaterepo/helloworld

    ibmcloud ce app create --name myhelloapp --image docker.io/privaterepo/helloworld --registry-secret privatedocker
    

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

  4. 部署应用程序后,您可以访问该应用程序。 要获取应用程序的 URL,请运行 ibmcloud ce app get --name myhelloapp --output url。 当您对 myhelloapp 应用程序执行 curl 操作时,将返回 Hello World

    curl https://myhelloapp.abcdabcdhye.us-south.codeengine.appdomain.cloud
    

后续步骤

  • 应用程序部署完成后,可通过 URL.NET Framework 访问应用程序

  • 您可以创建 定制域映射 并将其分配给应用程序。 有关使用定制域名跨多个区域部署应用程序的更多信息,请参阅 配置高可用性应用程序

  • 现在,您的应用程序已部署,请考虑使应用程序成为事件驱动的应用程序。 通过使用事件预订,您可以通过 定期调度 来触发应用程序,或者设置应用程序以对事件 (例如 文件上载Kafka 消息) 作出反应。

部署应用程序后,您可以使用以下 任何 方法 更新已部署的应用程序 及其引用的代码,而与创建或先前更新应用程序的方式无关:

  • 如果您具有容器映像,那么根据 Open Container Initiative(OCI)标准,您只需要提供对该映像的引用,这将指向部署应用程序时容器注册表的位置。 您可以使用 公共注册表专用注册表 中的映像来部署应用程序。

    如果使用 app create 命令创建了应用程序,并且指定了 --build-source 选项以从本地或存储库源构建容器映像,并且要将应用程序更改为指向其他容器映像,那么必须首先从应用程序中除去构建的关联。 例如,运行 ibmcloud ce application update -n APP_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 存储库的样本