Пакет Azure отказывается запускать задачи докера на узлах, поддерживающих докер - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть пакетный пул Azure с узлами, поддерживающими Docker. То есть предложение операционной системы: MicrosoftWindowsServer WindowsServer 2016-Datacenter-with-Containers .

Я создаю задачу как Рекомендуется :

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.

Это не имеет смысла. Когда я подключаюсь к узлу, я вижу там докер, изображение предустановлено, поэтому я могу сразу запустить контейнер. Задача заканчивается почти сразу, поэтому вероятнее всего, что пакет Azure просто заметит настройки контейнера и по какой-то причине выбросит.

Есть ли обходные пути? Google предлагает 0 ссылок на имя ошибки.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Без контекста того, как вы создали пул, этот ответ не является окончательным. Но, скорее всего, вы не указали ContainerConfiguration на VirtualMachineConfiguration объекта CloudPool .

См. Это руководство , в котором приведено руководство по выполнению рабочих нагрузок контейнера в пакете Azure.

0 голосов
/ 10 сентября 2018

Что помогло, так это вообще игнорирование TaskContainerSettings, то есть имитация обычного CloudTask, который еще должен запускаться в командной строке задачи:

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.

...