Gitlab CI - ОШИБКА: задание не выполнено: исполнителю требуется OSType = linux, но Docker Engine поддерживает только OSType = windows - PullRequest
3 голосов
/ 08 ноября 2019

Получение этой ошибки при запуске конвейера Gitlab CI. Как я понимаю, ошибка говорит о том, что я пытаюсь запустить образ докера типа Linux на движке Windows? Но дело в том, что я использую образ Windows Docker. В чем может быть проблема?

ОШИБКА: задание не выполнено: исполнителю требуется OSType = linux, но Docker Engine поддерживает только OSType = windows

Мой CI:

image: hello-world:nanoserver

stages:
  - build

build1:
  stage: build
  script:
    - echo "Hello world"

Ответы [ 2 ]

5 голосов
/ 11 ноября 2019

В чем разница между тегами "Shared" и "Simple"?

Некоторые изображения разделены разделами "Simple Tag" и "Shared Tags" в разделе "Поддерживаемые теги исоответствующие ссылки Dockerfile »(см. пример с монго).

« Простые теги »являются экземплярами« одного »образа Linux или Windows. Это часто список манифеста, который может включать в себя то же изображение, созданное для других архитектур;например, mongo: 4.0-xenial в настоящее время имеет изображения для amd64 и arm64v8. Демон Docker отвечает за выбор подходящего образа для архитектуры хоста.

«Общие теги» - это теги, которые всегда указывают на список манифеста, который включает в себя некоторую комбинацию потенциально нескольких версий образов Windows и Linux во всех ихсоответствующие архитектуры изображений - в примере с монго тег 4.0 является общим тегом, состоящим из (на момент написания этой статьи) всех 4.0-xenial, 4.0-windowsservercore-ltsc2016, 4.0-windowsservercore-1709 и 4.0-windowsservercore-1803.

«Простые теги» позволяют Docker запускать mongo: 4.0-xenial для «правильных действий» на архитектурах на одной платформе (Linux в случае mongo: 4.0-xenial). «Общие теги» позволяют Docker запускать mongo: 4.0 для грубой работы как в Linux, так и во многих других поддерживаемых версиях Windows (таких как Windows Server Core LTSC 2016, где демон Docker снова отвечает за определение подходящего образав зависимости от платформы и версии хоста).

Предлагаю попробовать общие теги:

image: hello-world

тег latest имеет:

linux/386

windows v10.0.17134.1069/amd64

windows v10.0.17763.802/amd64

и Docker подберет подходящий для вас

С здесь вам нужен исполнитель docker-windows для запуска Windows Container

, поэтому вы можете добавить executor = "docker-windows"в конфиг ваших бегунов

0 голосов
/ 11 ноября 2019

Образ hello-world:nanoserver основан на Linux. Отсюда выдается сообщение об ошибке.

Вы используете Windows Docker Engine. Используйте winamd64/hello-world

...