【问题标题】:WSL2 (docker) ports are not openend on hostWSL2(docker)端口在主机上未打开
【发布时间】:2021-11-04 12:07:16
【问题描述】:

当我在 WSL2 中通过 docker 运行映像时,端口未在主机上发布。为什么是这样?我可以做些什么来完成这项工作?

【问题讨论】:

  • 原因是 WSL2 运行带有您选择的操作系统的 VM。如果要通过 Windows 机器上的端口访问 WSL2 服务,则需要在 Windows 端运行一个代理,将流量转发到 WSL2 VM。您可以使用netsh,虽然它有点乱。 dev.to/vishnumohanrk/wsl-port-forwarding-2e22。下载 ncat 的 Windows 版本可能会为您提供更容易记住的命令。
  • 我刚刚用 wsl --shutdown 重新启动了 WSL,然后再次尝试了同样的事情,现在它可以工作了。你让它听起来不应该像这样工作?
  • 我认为不会。当您从 WSL 运行 docker 命令时,WSL 虚拟机就是主机。我刚刚检查过,Windows 端和 WSL VM 有不同的 IP 地址,所以我有点惊讶 WSL 端口自动暴露在 WIndows 端。但如果它像您想要的那样开箱即用,那就太好了。

标签: docker windows-subsystem-for-linux


【解决方案1】:

所以虽然我仍然不知道为什么会发生这种情况(有时),但似乎重启会修复它(暂时?):

(在 windows cmd 上)

> wsl --shutdown

重新运行与上述相同的命令会产生映射的端口,在 Windows 主机上也可见:

C:\WINDOWS\system32>netstat -ano | findstr 55580
  TCP    127.0.0.1:55580        0.0.0.0:0              ABHÖREN         12392
  TCP    [::1]:55580            [::]:0                 ABHÖREN         12392

12392 PID 是 wslhost.exe

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 2017-05-16
    • 2016-07-26
    • 1970-01-01
    相关资源
    最近更新 更多