Gitlab CI-错误:作业失败:执行程序需要OSType = linux,但Docker Engine仅支持OSType = windows

use*_*273 3 gitlab docker gitlab-ci gitlab-ci-runner

运行Gitlab CI管道时出现此错误。据我了解,错误表明我正在尝试在Windows docker-engine上运行Linux类型的docker映像?但问题是我正在使用Windows docker映像。可能是什么问题呢?

错误:作业失败:执行程序需要OSType = linux,但是Docker Engine仅支持OSType = windows

我的CI:

image: hello-world:nanoserver

stages:
  - build

build1:
  stage: build
  script:
    - echo "Hello world"
Run Code Online (Sandbox Code Playgroud)

Lin*_*nPy 5

“共享”和“简单”标签之间有什么区别?

一些映像在“支持的标签和相应的Dockerfile链接”下将“简单标签”和“共享标签”部分分开(请参阅mongo图像示例)。

“简单标签”是“单个” Linux或Windows映像的实例。它通常是一个清单清单,可以包含为其他体系结构构建的相同映像。例如,mongo:4.0-xenial当前具有用于amd64和arm64v8的映像。Docker守护程序负责为主机架构选择适当的映像。

“共享标签”是始终指向清单清单的标签,该清单包括跨所有映像结构的Windows和Linux映像的潜在多个版本的某种组合-在mongo示例中,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 run mongo:4.0可以在Linux和受支持的Windows的许多不同版本(例如Windows Server Core LTSC 2016)上大致工作,其中Docker守护程序再次负责确定适当的映像。基于主机平台和版本)。

我建议您尝试共享标签:

image: hello-world
Run Code Online (Sandbox Code Playgroud)

latest 标签具有:

linux/386

windows v10.0.17134.1069/amd64

windows v10.0.17763.802/amd64
Run Code Online (Sandbox Code Playgroud)

Docker将为您挑选合适的

这里您需要执行程序docker-windows来运行Windows Container

因此您可以将其添加executor = "docker-windows"到跑步者配置中

  • 执行器不是docker-windows,而只是windows。这就是问题所在:) (2认同)

Man*_*ngh 0

hello-world:nanoserver镜像基于Linux。因此抛出错误消息。

您正在使用 Windows docker 引擎。使用winamd64/hello-world