Azure容器实例-.net sdk-更改环境变量并重新启动任务容器

Azure容器实例-.net sdk-更改环境变量并重新启动任务容器,azure,containers,azure-container-instances,Azure,Containers,Azure Container Instances,我部署了一个容器组,其中只有一个容器,重启策略为“从不”。我想再次运行这个容器,但是使用不同的环境变量。我在powershell和azure cmdlet中看到了实现这一点的方法,但azure.net SDK并不清楚如何实现这一点 有人对如何使用fluentapi实现这一点有什么建议吗?这对我很有用,因为不需要再次提取映像,只需重新启动容器实例。当您想再次运行此容器时,这意味着您需要更新此容器组的配置,即使您只想更改环境变量。获取更多有关的详细信息。对于Azure容器实例,更新意味着再次创建。对

我部署了一个容器组,其中只有一个容器,重启策略为“从不”。我想再次运行这个容器,但是使用不同的环境变量。我在powershell和azure cmdlet中看到了实现这一点的方法,但azure.net SDK并不清楚如何实现这一点


有人对如何使用fluentapi实现这一点有什么建议吗?这对我很有用,因为不需要再次提取映像,只需重新启动容器实例。

当您想再次运行此容器时,这意味着您需要更新此容器组的配置,即使您只想更改环境变量。获取更多有关的详细信息。对于Azure容器实例,更新意味着再次创建。对于.NET,您可以使用中的设置环境变量,然后再次创建容器组。

我不确定您是否能够防止在容器启动时再次提取图像。我经常看到ACIs在重新启动时再次拉入映像,而不管以前是否拉入了相同的映像。我想这就是无服务器在现实中的含义;)

从您的问题来看,还不完全清楚您想要实现什么,以及使用环境变量重新启动容器是否是最好的方法

因此,在不了解具体情况的情况下,这里有几个想法:

如果你偶尔运行容器,只想给它一些指令,你可以考虑从参数化的ARM模板重新部署容器。您完全可以通过ARM模板传入环境变量

您可以将Azure存储帐户中的文件共享装载到容器中,并运行脚本从容器中加载VAR。您需要将要处理的数据上载到文件共享并启动容器

我使用它在通用容器中运行任意(.NET)可执行文件,例如用于测试目的

对于更频繁的运行,您可以将配置数据粘贴到数据库、队列或blob中,并从容器中处理这些数据。Blob和队列可以很容易地绑定到Azure函数,这样您就可以拥有一个函数,在有工作要处理时自动启动容器

从您的问题来看,我猜您正在寻找一些.NET代码来实现这一点。管理SDK中似乎对此提供了一些支持,但到目前为止我还无法实现:

使用System.Threading.Tasks;
使用Microsoft.Azure.Management.ContainerInstance.Fluent;
使用Microsoft.Azure.Management.ContainerInstance.Fluent.Models;
使用Microsoft.Azure.Management.Fluent;
使用Microsoft.Azure.Management.ResourceManager.Fluent;
// ...
公共静态异步任务SetEnvAndStart(字符串varName,字符串customValue)
{
//连接到Azure
var credentials=SdkContext.AzureCredentialsFactory.FromServicePrincipal(
Configuration.ClientId(),
Configuration.ClientSecret(),
Configuration.TenantId(),
AzureEnvironment.AzureGlobalCloud);
var azure=await azure.Authenticate(凭据).WithDefaultSubscriptionAsync();
//查找您的容器组
var containerGroup=await azure.containerGroup.GetByIdAsync(“”);
//添加环境变量
containerGroup.Containers[“mycontainer”].EnvironmentVariables.Add(新的EnvironmentVariable(varName,customValue));
//应用更改
等待containerGroup.Update().ApplyAsync();
//重新启动容器
等待ContainerGroupsOperationsExtensions.StartSync(containerGroup.Manager.Inner.ContainerGroups,containerGroup.ResourceGroupName,containerGroup.Name);
}

如果您真的想使用环境变量,我认为您最好的选择是重新创建容器。您可能会发现Azure管理SDK非常有用。

谢谢……这也是我尝试过的,但到目前为止还无法正常工作,而且文档很少。我想在容器组中重新运行容器,而不需要再次拉取容器,而且目前似乎没有办法这样做(功能正在进行),因此即使它工作,ACI也不会缓存容器,因此我的方案不起作用。。。