[英]Start and stop Docker container from Azure function based on input
我想知道是否有某種方法可以在 Azure 雲平台上實現以下目標:
根據輸入參數和發布到 Azure 函數的文件,使用 C# 代碼從 Azure 函數啟動 Docker 容器(Azure 容器實例)。
容器啟動后,必須啟動容器內的軟件,以根據發布到 Azure 函數的輸入文件和參數執行一些工作。
在 Docker 容器內的軟件完成並將輸出寫入某個數據庫(Azure 中也有 MS SQL Server)后,Azure 函數必須停止容器(也可以是輪詢不同的 Azure 函數,例如每分鍾一次,檢查是否有任何 Docker 映像正在執行任何工作)。
如果在 Docker 容器當前啟動並運行時有請求進入 Azure 函數,這些函數會從同一映像啟動一個新的 Docker 容器並執行相同的操作。
需要啟動和停止 Docker 容器的原因是為了降低成本,因為需要使用多個 CPU 內核和大量 RAM 的實例的苛刻工作負載。
在您的函數中,您可以使用 C# 中的 Microsoft.Azure.Management.ContainerInstance 命名空間在 ACI 中啟動和停止容器。 這是Nuget 包的鏈接和我找到的示例:
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();
有很多方法可以實現您的目標。 您可以使用邏輯應用程序來啟動和停止使用ACI 連接器的ACI 中的容器,而不是使用函數。 您可以想到與此類似的工作流程:
您當然可以並行運行多個邏輯應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.