我在WSL2的一个容器内运行了一个MongoDB实例。
当我尝试在浏览器中通过localhost:27017
发出请求时,即使显示错误,它也可以正常工作,因为我尝试使用HTTP协议访问数据库。
但是,当我尝试使用主机名localhost和端口27017从Compass访问我的数据库时,在30000ms之后我超时了,并且无法访问它。
有人知道为什么吗?
答案 0 :(得分:1)
我只能使用WSL2 IP地址连接mongoDB实例。
您可以通过在WSL中运行此代码来获得它:
ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1
或Windows主机上Powershell中的这个:
[Regex]::Match((wsl -- ip addr show eth0), 'inet (?<IP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/').Groups["IP"].Value
坏消息:此IP在每次WSL2重新启动时都会更改。有一个go-wsl2-host为该IP添加主机并保持更新。但我从未使用过。