Azure Batch 拒绝 运行 docker 支持节点上的 docker 任务

Azure Batch refuses to run docker tasks on docker supporting nodes

我有一个 Azure Batch 池,其节点支持 Docker。 即 OS 报价为 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 个引用。

有用的是完全忽略 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 对容器的支持变得更加稳定之前,这确实是一种解决方法。

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

请参阅此 guide 以获取有关 Azure Batch 上 运行 容器工作负载的教程。