如何解决 GitLab 错误“守护程序的错误响应:无效条件:‘未运行’”?

Jos*_*eia 2 gitlab docker gitlab-ci gitlab-ci-runner

我设置了一个 Windows GitLab 运行程序,它应该从我们的容器注册表下载 Docker 映像,然后在管道中运行构建脚本。不幸的是,由于以下错误,Docker 容器从未启动:

Running with gitlab-runner 15.1.0 (76984217)
  on WindowsDockerRunner wZMWQZYi
Resolving secrets
Preparing the "docker-windows" executor
Using Docker executor with image mcr.microsoft.com/windows/servercore:ltsc2019 ...
Pulling docker image mcr.microsoft.com/windows/servercore:ltsc2019 ...
Using docker image sha256:e6b07227af5ca9303c2112b574f6f27f38135bbf9df29d829142410221967401 for mcr.microsoft.com/windows/servercore:ltsc2019 with digest mcr.microsoft.com/windows/servercore@sha256:26c6c296a4737ba478fe3c3e531b098f89b5562c40b416ba6fb8177ac462d1af ...
Preparing environment
Running on RUNNER-WZMWQZYI via 
runner2...
ERROR: Job failed (system failure): prepare environment: Error response from daemon: invalid condition: "not-running". Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information
Run Code Online (Sandbox Code Playgroud)

错误消息没有明确说明问题的原因是什么,并且它引用的文档没有提及任何有关“条件”的内容。根据指向 shell 配置文件的链接,我怀疑它可能与正在运行的 shell 有关,但是当我在本地运行 Docker 容器时,它可以正常启动到 PowerShell。

有谁知道如何解决这个问题?

小智 5

我在使用Windows Server 安装脚本安装 Docker Engine 后遇到了这个问题,该脚本从https://master.dockerproject.org获取 docker.exe 和 dockerd.exe ,这些版本最后更新于 2022 年 3 月,我发现 gitlab-runner 14.9 及更早版本可以与此版本(2022 年 3 月之前发布)兼容,但 14.10 则不能(2022 年 4 月 19 日发布),任何较新版本也不能。

安装 Docker Desktop 可以解决此问题,因为它提供了最新版本。然而,使用 Docker Desktop 会带来许可问题。另一种方法是手动安装 Docker Engine/更新 Microsoft 脚本下载的版本。

Moby GitHub 项目上提供了 Docker 引擎构建,可从https://download.docker.com/win/static/stable/x86_64/下载,从此处下载最新版本并替换C:\Windows\System32修复问题中的 docker 可执行文件,使用最新的 gitlab-runner。

另一种方法是使用docker-engine Chocolatey 包(我顺便维护了它),它为上述稳定版本提供安装脚本:

choco install docker-engine
Run Code Online (Sandbox Code Playgroud)

Windows-Containers 团队还存在一个悬而未决的问题,即删除(过时的)nightlies:https://github.com/microsoft/Windows-Containers/issues/256,这将通过 Microsoft 提供稳定的 docker 构建推荐的安装方法。