Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#启动以前停止的Azure容器实例?_C#_Azure_Azure Container Service - Fatal编程技术网

如何使用C#启动以前停止的Azure容器实例?

如何使用C#启动以前停止的Azure容器实例?,c#,azure,azure-container-service,C#,Azure,Azure Container Service,我有以下代码来停止Azure容器实例,并希望使用类似的方法来启动它 using Microsoft.Azure.Management.Compute.Fluent.Models; using Microsoft.Azure.Management.Fluent; using Microsoft.Azure.Management.ResourceManager.Fluent; using Microsoft.Azure.Management.ResourceManager.Fluent.Core;

我有以下代码来停止Azure容器实例,并希望使用类似的方法来启动它

using Microsoft.Azure.Management.Compute.Fluent.Models;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;

 var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal("XXXX",                "XXXX", "XXXX", AzureEnvironment.AzureGlobalCloud);

        var azure = Azure
            .Configure()
            .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
            .Authenticate(credentials)
            .WithSubscription("XXXXX");

        var containerName = "mycontainer";
        var containerGroup = azure.ContainerGroups.GetByResourceGroup("myResourceGroup", containerName);
        if (containerGroup.State == "Running")
        {
            containerGroup.Stop();
        }

我想做同样的事情并启动我的azure容器实例。那么containerGroup.Start()在哪里?这似乎不存在于界面中。我尝试过使用containerGroup.Restart();但这在停止状态下不起作用。我需要能够在C#代码中实现这一点,如果可能的话,我希望避免使用powershell

不幸的是,当您停止容器实例时,它们将处于终止状态,您无法再次启动它们

无法更新终止或删除的容器组。每年一次 容器组已停止(处于终止状态)或已停止 已删除,组将作为新组部署

即使您更新了ACI,也意味着ACI将被重新部署。你可以看看。此外,当容器实例处于运行状态时,重启操作也会起作用

所以C#SDK中没有启动功能,至少现在是这样。希望这对你有帮助

更新

请看一看此次活动:


每次在停止后启动容器组时,容器组总是执行以下步骤:拉取图像->创建容器组->启动容器实例。很明显,容器组是在停止后启动时重新创建的。

有一种方法可以做到这一点,但它没有在fluent API中公开:

using Microsoft.Azure.Management.ContainerInstance.Fluent;

// azure is an instance of IAzure; the fluent Azure API
var resources = await azure.ContainerGroups.ListAsync();

foreach(var containerGroup in resources.Where(aci => aci.State != "Running"))
{
  await ContainerGroupsOperationsExtensions.StartAsync(
           containerGroup.Manager.Inner.ContainerGroups,
           containerGroup.ResourceGroupName, 
           containerGroup.Name);
}
正如其他人所提到的,您确实需要意识到这实际上是在开始一个新的容器。除非您将上一次运行的状态持久化到其他地方(如在中),否则不会维护上一次运行的状态

您还需要向执行此代码的人授予适当的权限。我正在使用一个函数,所以我必须设置一个服务帐户和一个角色,这包含了所有细节

更新
我正在使用的代码在GitHub上:

新的fluent SDK尚未使用Start支持进行更新,但正在进行中!如果对你有用的话,非流畅的FlavorSDK有启动支持。还有问题吗?或者,如果答案是有帮助的,你可以接受它。它不能回答我的问题。谢谢你的输入你希望得到什么答案?在停止状态下启动容器组的C#函数?如果这是真的,为什么我可以从门户启动它们?如果您看到@Anders上面的注释,则表明它将被添加到fluent SDK中,并且已经存在于非fluent SDK中。它也存在于powershell@johnstaveley我在答案中显示了测试截图。希望它能帮助您。嗨,在启动容器组之前有没有办法更改环境变量?文档似乎有点神秘,我不知道从管理API中有什么方法可以做到这一点,但我可以想出一些将数据传递给容器组的替代方法。如果你想得到更详细的答案,你可能应该发布一个新问题。谢谢,发布了这个问题