使用 docker 的 Virtualbox 端口转发

Virtualbox port forwarding with docker

我在本地 运行 virtualbox,我使用了这样的端口转发

0.0.0.0:7000 -> 0.0.0.0:7000

这样我就可以做到

curl http://localhost:7000

从主机到虚拟机并能够与虚拟机中的应用程序 运行 通信并侦听端口 7000

可以反过来吗?我想设置一个端口转发能够

curl http://localhost:6000

从我的虚拟机,并能够与在主机上运行并在端口 6000.

上侦听的应用程序通信

我正在使用 NAT

我已经知道桥接网络和使用主机的网络 IP。我不能用那些。我感兴趣的就是上面这些。

惊呼:

上述限制的原因是因为我将 dinghydockerdocker-machine 一起使用。如果我将网络更改为 NAT 以外的网络,设置将会中断。此外,我不能使用 localhost 以外的东西,因为这些是应用程序的默认设置,我需要它们进行通信,就好像它们都在主机上一样 运行 。

可能的选项:

  1. 使用 ssh -R 设置 SSH 隧道,参见 https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work

  2. 在虚拟机上设置 Nginx 或 Apache 反向代理以将流量转发到主机。

  3. 通过将 localhost 添加到 /etc/hosts 文件强制 VM 认为 localhost 是您的主机 ip(这有破坏其他服务的潜在风险,这些服务可能依赖于 localhost 为 127.0.0.1 )