使用 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。我不能用那些。我感兴趣的就是上面这些。
惊呼:
上述限制的原因是因为我将 dinghy
与 docker
和 docker-machine
一起使用。如果我将网络更改为 NAT
以外的网络,设置将会中断。此外,我不能使用 localhost
以外的东西,因为这些是应用程序的默认设置,我需要它们进行通信,就好像它们都在主机上一样 运行 。
可能的选项:
使用 ssh -R 设置 SSH 隧道,参见 https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work
在虚拟机上设置 Nginx 或 Apache 反向代理以将流量转发到主机。
通过将 localhost 添加到 /etc/hosts 文件强制 VM 认为 localhost 是您的主机 ip(这有破坏其他服务的潜在风险,这些服务可能依赖于 localhost 为 127.0.0.1 )
我在本地 运行 virtualbox
,我使用了这样的端口转发
0.0.0.0:7000 -> 0.0.0.0:7000
这样我就可以做到
curl http://localhost:7000
从主机到虚拟机并能够与虚拟机中的应用程序 运行 通信并侦听端口 7000
。
可以反过来吗?我想设置一个端口转发能够
curl http://localhost:6000
从我的虚拟机,并能够与在主机上运行并在端口 6000
.
我正在使用 NAT
。
我已经知道桥接网络和使用主机的网络 IP。我不能用那些。我感兴趣的就是上面这些。
惊呼:
上述限制的原因是因为我将 dinghy
与 docker
和 docker-machine
一起使用。如果我将网络更改为 NAT
以外的网络,设置将会中断。此外,我不能使用 localhost
以外的东西,因为这些是应用程序的默认设置,我需要它们进行通信,就好像它们都在主机上一样 运行 。
可能的选项:
使用 ssh -R 设置 SSH 隧道,参见 https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work
在虚拟机上设置 Nginx 或 Apache 反向代理以将流量转发到主机。
通过将 localhost 添加到 /etc/hosts 文件强制 VM 认为 localhost 是您的主机 ip(这有破坏其他服务的潜在风险,这些服务可能依赖于 localhost 为 127.0.0.1 )