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

如何从局域网设备访问Windows WSL2后端的Docker化Flask API

解决WSL2后端Docker中Flask API局域网访问问题

以下是针对你的场景的具体解决方向:

1. 确保Flask服务绑定到所有接口

容器内运行的Flask服务默认只会监听127.0.0.1,仅允许容器内部访问。必须修改启动代码,让服务监听容器的所有网络接口:

# 在stt_api.py中确保启动代码如下
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5001)

这是容器内服务对外提供访问的基础前提。

2. 验证并修复WSL2端口转发

WSL2虚拟机与Windows主机是独立的网络环境,Docker的端口映射实际是先映射到WSL2,再转发到Windows主机。你需要确认端口转发规则是否存在:

  • 在Windows PowerShell中执行:
    netsh interface portproxy show all
    
  • 检查是否存在0.0.0.0:5001指向你的WSL2 IP(172.27.145.194)的转发规则。如果没有,手动添加:
    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=5001 connectaddress=172.27.145.194 connectport=5001
    
    注意:WSL2的IP可能重启后变化,若后续再次出现问题,需重新检查并更新转发规则。

3. 配置Windows防火墙允许端口访问

Windows防火墙默认会阻止局域网设备访问主机的非默认端口,需添加入站规则:

  • 打开「控制面板」→「Windows Defender防火墙」→「高级设置」
  • 右键「入站规则」→「新建规则」
  • 选择「端口」→ 勾选「TCP」,输入5001
  • 选择「允许连接」,勾选适用的网络环境(一般选「域」「专用」「公网」)
  • 命名规则后完成创建

4. 确认Docker Desktop的WSL集成设置

确保Docker Desktop已正确集成你的WSL2发行版:

  • 打开Docker Desktop设置,进入「Resources」→「WSL Integration」
  • 找到你的Ubuntu发行版,勾选启用集成选项,点击「Apply & Restart」

5. 可选:使用WSL2的host网络模式

若上述步骤仍有问题,可尝试让容器直接使用WSL2的网络(仅限WSL2环境内运行Docker):
修改docker-compose.yml,添加network_mode: host:

tfmodelserving:
  build: ./tfserving/docker-image
  container_name: tfserving
  network_mode: host
  volumes:
    - ./tfserving/drive/src:/src

此模式下无需配置端口映射(容器直接使用WSL2的5001端口),但需在WSL2的Ubuntu终端中执行docker-compose up,而非Windows终端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:31:02