【问题标题】:Azure Batch refuses to run docker tasks on docker supporting nodesAzure Batch 拒绝在 docker 支持节点上运行 docker 任务
【发布时间】:2018-09-10 11:47:05
【问题描述】:

我有一个带有支持 Docker 的节点的 Azure Batch 池。 也就是说,操作系统提供的是 MicrosoftWindowsServer WindowsServer 2016-Datacenter-with-Containers

我创建一个任务为recommended

private static CloudTask CreateTask(string id, string commandLine)
{
    var autoUserSpec = new AutoUserSpecification(elevationLevel: ElevationLevel.Admin);
    var containerSettings = new TaskContainerSettings(_imageName);
    var task = new CloudTask(id, commandLine)
    {
        UserIdentity = new UserIdentity(autoUserSpec),
        ContainerSettings = containerSettings,
    };

    return task;
}

当任务运行时,它完成并出现错误 ContainerPoolNotSupportedThe compute node does not support container feature

这没有意义。当我连接到节点时,我在那里看到了 docker,图像已预先安装,因此我什至可以立即运行容器。任务几乎立即完成,因此 Azure Batch 很可能只是注意到容器设置并出于某种原因抛出。

有什么解决方法吗? Google 为错误名称提供了 0 个参考。

【问题讨论】:

    标签: azure docker containers azure-batch


    【解决方案1】:

    如果没有您如何创建池的上下文,这个答案是不确定的。但很可能您没有在CloudPool 对象的VirtualMachineConfiguration 上指定ContainerConfiguration

    有关在 Azure Batch 上运行容器工作负载的教程,请参阅此 guide

    【讨论】:

      【解决方案2】:

      帮助的是完全忽略TaskContainerSettings,即模仿一个普通的CloudTask,但在任务命令行中运行docker:

      private static CloudTask CreateTask(string id, string commandLine)
      {
          var autoUserSpec = new AutoUserSpecification(elevationLevel: ElevationLevel.Admin);
          var task = new CloudTask(id, $"docker run {_imageName} {commandLine}")
          {
              UserIdentity = new UserIdentity(autoUserSpec),
          };
      
          return task;
      }
      

      因此,在 Azure 中对容器的支持变得更加稳定之前,这确实是一种解决方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-04
        • 2018-01-24
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        相关资源
        最近更新 更多