在带有 Docker 桌面的 GitLab CI 管道上使用适用于 Windows 的 Gitlab-Runner

Posted

技术标签:

【中文标题】在带有 Docker 桌面的 GitLab CI 管道上使用适用于 Windows 的 Gitlab-Runner【英文标题】:Using Gitlab-Runner for Windows on GitLab CI Pipeline with Docker Desktop 【发布时间】:2022-01-18 18:44:06 【问题描述】:

我想在 Windows 环境中运行我的 Gitlab-CI 管道。因此,我使用了一个 Windows Gitlab-Runner 使用 Docker Desktop 4.3.0 版本作为执行器。

Gitlab-Runner 在其上运行的“服务器”具有 Windows 10 1809,内部版本 17763.2300 和运行器版本 14.5.0。 当我尝试运行管道时出现以下错误:

错误:作业失败(系统故障):来自守护程序的错误响应:容器 b098e3522e8889f8a1ec6c48f40d84fb2eb2a398d2d0923a04fda47054b997e3 在 hcsshim::System::CreateProcess 期间遇到错误:Windows 系统调用失败:系统找不到指定的文件。 (0x2) [事件详情:提供者:00000000-0000-0000-0000-000000000000] [事件详情:提供者:00000000-0000-0000-0000-000000000000] 【事件详情:onecore\vm\compute\management\orchestration\vmhostedcontainer\processmanagement.cpp(173)\vmcomputeagent.exe!00007FF6CC039F4B: (caller: 00007FF6CBFEE13A) Exception(6) tid(388) 80070002 系统找不到指定的文件. 调用上下文:[\Bridge_ProcessMessage\VmHostedContainer_ExecuteProcess] 提供者:00000000-0000-0000-0000-000000000000] (exec.go:66:14s)

VIEW ERROR

我也尝试在客户端上使用 Windows Gitlab-Runner。它有一个 Windows 10 版本 21H1,内部版本 19043.1348 和运行器版本 14.5.1。同样的错误又出现了。

我两次都使用了 python 图像和 Windows 图像 (mcr.microsoft.com/windows/servercore:20H2)。

似乎是在清理之后发生了错误,但我不明白日志错误信息。 power shell 已经以管理员权限运行。

有谁知道如何解决这个错误?

【问题讨论】:

你运行的是什么版本的 Docker Desktop? 您好,我正在运行 Docker Desktop 4.3.0 版 如果您可以将错误消息的文本复制并粘贴到您的问题中,那就太好了。这样,搜索引擎可以索引您的问题,它会帮助其他有类似错误的人。它还使您的问题更易于阅读 【参考方案1】:

您发布的错误消息表明 docker 客户端本身需要以管理员权限启动。您应该尝试以管理员身份运行 Docker Desktop。

更新:是的,从新的错误消息看来,您可能需要在 windows 中启用虚拟化功能。

这是一个相关的问题:Error response from daemon: hcsshim::CreateComputeSystem: The virtual machine could not be started because a required feature is not installed

您可以通过在 powershell 中运行这些命令来启用它们(以管理员身份):

Enable-WindowsOptionalFeature -Online -FeatureName containers –All
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

此外,请查看此博客文章以获取其他故障排除提示:https://keathmilligan.net/gitlab-docker-windows-visualstudio

根据文章,检查你的主机和容器版本:

Windows 容器主机只能运行具有相同操作系统版本或更早版本的容器映像。例如,如果您运行的是 Windows 10 或 Server 1909 版,您将无法运行 2004 版或更高版本的映像。

【讨论】:

感谢您的快速回复。出现了另一个错误。我用问题中的错误消息更改了图片。您对此也有什么建议吗? @Inka.F 我对您的新错误消息进行了更新

以上是关于在带有 Docker 桌面的 GitLab CI 管道上使用适用于 Windows 的 Gitlab-Runner的主要内容,如果未能解决你的问题,请参考以下文章

Docker 构建失败 - 带有 GKE 的 Gitlab CI。无法通过 tcp://localhost:2375 连接到 Docker 守护程序。 docker 守护进程是不是正在运行?

如何正确设置环境变量 Gitlab CI/CD 和 Docker

无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。 docker 守护进程是不是正在运行?带有自托管运行器的 Gitlab Cloud CI/CD 错误

DevOps实战-基于Docker的CI/CD

在 Gitlab CI 上更改 Xdebug 模式 PHP Docker

我需要通过 gitlab-ci 中的 ssh 将 env 变量传递给 docker