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

Windows内置OpenSSH配合Docker Desktop构建时报All pipe instances are busy错误

问题根因

你遇到的All pipe instances are busy报错是Windows自带OpenSSH 8.1~8.6版本的ssh-agent服务的已知缺陷:其命名管道实例数限制过低,老版本Docker BuildKit连接时会触发管道占用冲突。

解决方案

按优先级从高到低排序:

方案1:替换为Git for Windows自带的SSH(永久解决)

  • 以管理员权限打开PowerShell,执行以下命令禁用系统自带ssh-agent:
Stop-Service ssh-agent
Set-Service -StartupType Disabled ssh-agent
  • 找到Git安装路径下的ssh目录,默认路径为C:\Program Files\Git\usr\bin\,将该路径添加到系统环境变量PATH中,并且移动到C:\Windows\System32\OpenSSH\路径之前,保证优先级更高。
  • 重启PowerShell,执行ssh -V确认输出为Git附带的OpenSSH版本,说明替换生效。
  • 启动Git自带的ssh-agent,添加你的私有仓库访问私钥:
# 启动代理
eval $(ssh-agent)
# 添加私钥,按提示输入密码(如果有)
ssh-add ~/.ssh/你的私钥文件名
  • 重新执行构建命令即可:
$env:DOCKER_BUILDKIT=1
docker build --ssh default .

方案2:升级Docker Desktop(永久解决)

你当前使用的Docker 20.10.10是2021年的旧版本,20.10.16及之后的稳定版已经适配了Windows自带OpenSSH的管道实现缺陷,升级Docker Desktop到最新稳定版即可直接解决该问题,无需修改SSH配置。

方案3:临时重启ssh-agent(应急使用)

如果不想修改现有配置,每次构建前以管理员权限打开PowerShell执行:

Restart-Service ssh-agent

重启后立刻执行构建命令,即可临时规避管道忙的报错,该方法仅单次生效,下次构建需要再次重启服务。

额外注意事项
  • 构建前必须先将访问GitHub的私钥添加到ssh-agent中,执行ssh-add 私钥路径操作,否则代理中没有可用密钥依然无法拉取私有仓库。
  • Dockerfile中拉取私有仓库的RUN指令需要挂载ssh代理,示例写法:
# 开启BuildKit的ssh挂载
RUN --mount=type=ssh git clone git@github.com:你的用户名/你的私有仓库.git

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:03