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

问题描述 投票:0回答:2

我有一个Azure批处理池,节点支持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;
}

当任务运行时,它以错误ContainerPoolNotSupported,The compute node does not support container feature完成。

这根本不符合逻辑。当我连接到节点时,我看到Docker在那里,图像已预先安装,所以我甚至可以立即运行容器。该任务几乎立即完成,因此Azure Batch只是注意到容器设置并出于某种原因抛出。

有没有解决方法? Google为错误名称提供了0个引用。

azure docker containers azure-batch
2个回答
1
投票

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

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


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中变得更加稳定。

© www.soinside.com 2019 - 2024. All rights reserved.