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

Docker容器无法连接Windows WSL中运行的Golang Echo Server

解决WSL中Go Echo服务无法被Docker容器访问的问题

问题原因

host.docker.internal在Windows Docker Desktop环境中默认指向Windows主机,而你的Go Echo服务运行在WSL虚拟机内部,并非直接在Windows主机上,因此容器通过host.docker.internal:5050无法定位到WSL中的服务。而你能访问Flask容器是因为该容器通过5000:5000将端口映射到了Windows主机,host.docker.internal可以直接访问Windows主机的端口。

解决方案

方案1:直接使用WSL虚拟机的IP访问

  1. 在WSL终端中执行以下命令获取WSL的IP地址:
    ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
    
  2. 在Docker容器中替换为实际的WSL IP进行访问:
    curl http://<WSL_IP>:5050/
    

方案2:将WSL端口转发到Windows主机

通过端口转发让Windows主机的5050端口指向WSL的5050端口,这样host.docker.internal就能直接访问:

  1. 先获取WSL的IP(同方案1)
  2. 打开Windows管理员命令提示符,执行端口转发命令:
    netsh interface portproxy add v4tov4 listenport=5050 listenaddress=0.0.0.0 connectport=5050 connectaddress=<WSL_IP>
    
  3. 之后在Docker容器中即可正常使用:
    curl http://host.docker.internal:5050/
    
    (如果WSL重启后IP变化,需要重新执行上述转发命令)

方案3:持久化配置host.docker.internal指向WSL IP

  1. 获取WSL的IP(同方案1)
  2. 打开Windows系统的C:\Windows\System32\drivers\etc\hosts文件(需管理员权限)
  3. 添加一行配置:
    <WSL_IP> host.docker.internal
    
    该方法的缺点是WSL重启后IP可能变更,需要手动更新hosts文件,也可以编写脚本自动更新。

内容的提问来源于stack exchange,提问作者ar-siddiqui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:07:44