如何在 WSL2 环境中使用 docker-ce 从 LAN 访问 ddev 站点?

How do I reach a ddev site from LAN with docker-ce in an WSL2 enviroment?

使用项目 TLD 配置 ddev 时,将“docker 桌面”替换为“docker-ce”时变得无法访问。

project_tld: testing

如何从我的本地机器和我们公司的 LAN 再次访问该项目?

网站无法访问的原因是 WSL2 仅将端口绑定到本地主机,而不是每个接口。
Docker 桌面本身绑定到每个接口并将所有内容转发到 WSL2,这就是它工作的原因。 docker-ce 需要手动解决方案。
问题记录在 wsl documentation 中并描述了解决方案。
github.

上的旧 WSL2 问题中可以找到用于自动发现和设置端口转发的脚本

为 WSL2 设置 localhostForwarding 选项 (documentation) 后,以下命令也可以工作:

netsh interface portproxy add v4tov4 listenport=80 connectport=80 connectaddress=127.0.0.1
netsh interface portproxy add v4tov4 listenport=443 connectport=443 connectaddress=127.0.0.1

在未来的某个版本中,Microsoft 可能会为 WSL2 恢复桥接网络选项,请参阅 issue discussion

编辑:从 Docker 桌面移动到 docker-ce 后,我发现我的解决方案不起作用,因为它会阻止 wsl 在重启后收听 127.0.0.1:80/443 .第四个 link 中的 powershell 解决方案可以直接连接到 wsl ip 地址。