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

WSL Ubuntu容器调用Windows宿主Node.js服务失败求助

解决容器无法访问Windows宿主Node.js AGI服务的问题

核心问题点

你的Node.js服务监听localhost:3000,仅允许Windows本地进程访问;WSL和容器属于外部网络环境,无法直接通过localhost或默认的host.docker.internal映射访问;同时WSL2的NAT网络特性可能导致网关地址无法正确指向Windows宿主。

具体解决步骤

1. 修改Node.js服务监听范围

将服务监听地址从localhost改为0.0.0.0,允许所有网络接口访问:

// 原代码示例
app.listen(3000);
// 修改后
app.listen(3000, '0.0.0.0');

修改后服务会监听所有可用网络接口,包括WSL和容器能触达的地址。

2. 获取Windows宿主的实际IP

在Windows命令提示符执行:

ipconfig

找到以太网适配器 vEthernet (WSL)对应的IPv4地址(比如192.168.1.100),记录该地址。

3. 容器内直接使用Windows IP调用服务

将AGI调用地址改为agi://[Windows_IP]:3000,例如agi://192.168.1.100:3000。

4. 配置Windows防火墙放行端口

  • 打开「Windows Defender 防火墙」→「高级设置」
  • 新建入站规则:选择「端口」,输入3000,允许连接,应用到所有网络类型。

5. 先验证WSL内的访问性

在WSL的Ubuntu环境中测试能否访问Windows服务:

curl http://[Windows_IP]:3000

如果能正常返回内容,再测试容器内的访问,排除WSL层面的网络障碍。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:03:23