在运行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"
答案 0 :(得分: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运行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将为您挑选合适的人
在here中,您需要执行者docker-windows
来运行Windows Container
因此您可以将executor = "docker-windows"
添加到跑步者配置
答案 1 :(得分:0)
hello-world:nanoserver
映像基于Linux。因此,将引发错误消息。
您正在使用Windows docker引擎。使用winamd64/hello-world