You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows Docker主机运行Stage?Linux正常但Windows 2016报错

在Windows Server 2016 Docker主机上运行Jenkins Stage的问题解决

我来帮你搞定这个问题!你在Linux上跑的Jenkins Docker Stage完全正常,但到了Windows Server 2016(Docker EE)就抛出java.io.IOException: CreateProcess error=2,核心原因是Windows和Linux的Docker容器生态是完全隔离的,下面给你一步步拆解解决:

问题根源分析

你用到的library/hello-world:latest是Linux专属镜像,里面的启动命令是Linux二进制文件。如果你的Windows Server 2016 Docker当前处于Windows容器模式,系统会尝试用Windows的执行逻辑去运行这个Linux二进制,自然找不到对应的文件,就触发了"系统找不到指定文件"的错误。

具体解决方案

1. 切换Docker到Linux容器模式(若需运行Linux镜像)

Windows Server上的Docker支持切换Linux/Windows容器模式:

  • 右键任务栏的Docker图标,选择"Switch to Linux containers"
  • 等待模式切换完成后,重新运行你的Jenkins Stage,此时Linux镜像就能正常启动了

2. 改用Windows兼容镜像(若需保留Windows容器模式)

如果必须使用Windows容器,就得换成基于Windows的镜像,比如微软官方的nanoserver或servercore镜像,修改后的示例代码如下:

stage('This is a Server 2016 docker host') { 
    agent { 
        docker { 
            image "mcr.microsoft.com/windows/nanoserver:ltsc2016" 
            label "my-WINDOWS-server"
            args "-v C:\\Users\\Public:C:\\Users\\Public"  // 可选:挂载必要卷以适配权限
        } 
    } 
    steps { 
        bat 'echo Hello from Windows container!'  // Windows容器需用bat/powershell命令,不能用sh
    } 
}

注意:Windows容器镜像必须和你的Windows Server版本匹配(比如Server 2016对应ltsc2016标签),否则会出现兼容性问题。

3. 检查Jenkins服务权限

确保运行Jenkins的服务账户(通常是Local System或自定义账户)拥有Docker daemon的访问权限:

  • 打开Docker设置,在"Shared Drives"中勾选对应盘符并授予权限
  • 将Jenkins账户加入本地的docker-users组,之后重启Jenkins服务

内容的提问来源于stack exchange,提问作者red888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:18:52