gpt4 book ai didi

c# - 根据输入从 Azure 函数启动和停止 Docker 容器

转载 作者:行者123 更新时间:2023-12-02 19:01:03 26 4
gpt4 key购买 nike

我想知道是否有某种方法可以在 Azure 云平台上实现以下目标:

  1. 根据输入参数和发布到 Azure 函数的文件,使用 C# 代码从 Azure 函数启动 Docker 容器(Azure 容器实例)。

  2. 容器启动后,必须启动容器内的软件来根据发布到 Azure 函数的输入文件和参数执行一些工作。

  3. 在 Docker 容器内的软件完成并将输出写入某个数据库(Azure 中也有 MS SQL Server)后,Azure 函数必须停止容器(也可以是轮询的不同 Azure 函数,例如,每分钟一次,检查任何 Docker 镜像是否没有执行任何工作)。

  4. 如果在 Docker 容器当前启动并运行时有请求传入 Azure 函数,这些函数会从同一镜像启动一个新的 Docker 容器并执行相同的操作。

需要启动和停止 Docker 容器的原因是为了降低成本,因为工作负载要求很高,需要使用多个 CPU 核心和大量 RAM 的实例。

最佳答案

在您的函数中,您可以使用 C# 中的 Microsoft.Azure.Management.ContainerInstance 命名空间启动和停止 ACI 中的容器。这是 link to the Nuget package和我找到的一个样本:

var containerGroup = azure.ContainerGroups.Define(containerGroupName)
   .WithRegion(azureRegion)
    .WithExistingResourceGroup(resourceGroupName)
    .WithLinux()
    .WithPublicImageRegistryOnly()
    .WithoutVolume()
    .DefineContainerInstance(containerGroupName)
         .WithImage(containerImage)
         .WithExternalTcpPort(80)
         .WithCpuCoreCount(1.0)
         .WithMemorySizeInGB(1)
         .Attach()
    .WithDnsPrefix(containerGroupName)
    .Create();

实现目标的方法有很多。您可以使用 Logic App 使用 ACI connector 来启动和停止 ACI 中的容器,而不是使用函数。 。你可能会想 与此类似的工作流程:

  • 添加一个将触发逻辑应用的操作,就像队列中的新消息一样。
  • 使用连接器创建 ACI 容器组。
  • 使用连接器在 ACI 中启动容器。
  • 您可以观察容器状态以查看它是否已成功创建。
  • 您可以通过使用 ACI 连接器设置环境变量(例如文件名或作业编号)来将值传递到容器。
  • 您添加一个循环来监视容器中代码的完成情况(您在日志中发送的输出)
  • 您使用连接器删除 ACI

您当然可以并行运行多个逻辑应用。

关于c# - 根据输入从 Azure 函数启动和停止 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60016663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com