4

我在 WSL2 的容器中运行了一个 MongoDB 实例。

当我尝试在浏览器中发出请求时localhost:27017,即使它显示错误,它也可以工作,因为我尝试使用 HTTP 协议访问数据库。

但是,当我尝试使用主机名 localhost 和端口 27017 从 Compass 访问我的数据库时,我在 30000 毫秒后超时,我无法访问它。

有人知道为什么吗?

4

1 回答 1

3

我只能使用 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

坏消息:每次 WSL2 重新启动时,此 IP 都会更改。有一个go-wsl2-host为这个 IP 添加一个主机并保持更新。但我从来没有用过。

于 2020-11-05T18:36:23.500 回答