我在 Windows 10 上使用 WSL2。
我的开发堆栈在主机操作系统上使用本地网络服务器(localwp 或 wamp)。 我使用 WSL2 作为主终端(SSH、Git、SASS、自动化工具……)。
我需要的是一种使用服务器名称而不是随机 IP 地址从 WSL2 系统连接到我的主机服务 (MySql) 的方法。
Windows 主机已经可以使用“localhost”连接到 WSL2 服务。有没有其他解决办法?
答案 0 :(得分:1)
嗯,你的标题和你的问题正文似乎不太一致。
问题标题说“使用本地主机”,但随后在正文中说“使用服务器名称”。
通过 WSL2 的名称“localhost”访问 Windows 10 服务?让我们说“不”。我可以想出可能性如何让它发挥作用,但会很复杂。
但我认为第二个确实是您正在寻找的,因此我可以想到在 WSL2 中通过主机名访问 Windows 主机服务的几个选项:
首先,希望是最简单的,WSL2 支持 mDNS(WSL1 不支持),因此您应该能够以 {hostname}.local
身份访问 Windows 主机(其中 {hostname}
是Windows 主机(字面意思是,在 bash 中,ping $(hostname).local
,因为分配的 WSL2 主机名是主机 Windows 10 计算机的主机名)。这对我有用。虽然我不记得必须做任何特殊的事情来启用它,{ {3}} 似乎表示您必须手动将其打开。
第二个选项是将您的 Windows 主机 IP 添加到 /etc/hosts
。如果您的 Windows IP 是静态的,那么您可以手动将其添加到 /etc/hosts
并完成。如果它是动态的,那么您可能需要编写脚本。您可以通过以下方式从 WSL2 内部检索它:
powershell.exe "(Test-Connection -ComputerName (hostname) -Count 1).IPV4Address.IPAddressToString"
(和其他方法)然后使用类似 sed
的东西来改变 /etc/hosts
。
答案 1 :(得分:0)
对我来说这是有效的。
ping $(hostname)
中运行它。就我而言,主机名是 DESKTOP-PTR6ALS
DESKTOP-PTR6ALS.local
中使用了它作为主机名。