由于不建议使用boot2docker,因此我已切换到docker-machine,但我不知道如何从docker-machine打开端口。在boot2docker中,我可以这样:

boot2docker ssh -L 27017:localhost:27017

只要打开SSH连接,这会将端口27017从VirtualBox转发到本地主机27017。请注意,我不是在寻找一种在VirtualBox中永久打开端口的方法。如何使用docker-machine实现呢?

最佳答案

您仍然可以从docker机器使用的VirtualBox中访问VBoxmanage.exe命令:

VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port27017,tcp,,27017,,27017";
  • 使用docker-machine info获取您的虚拟机名称。
  • 如果虚拟机尚未启动,
  • 请使用modifyvm

  • 请参阅this answer中的实际示例。

    这是当前的解决方法,有待将参数传递给docker-machine ssh:请参阅issue 691

    另一个解决方法是不转发端口,而是直接使用VM的IP:
     $(docker-machine ip default)
    

    作为commentedsdc:


     VBoxManage showvminfo boot2docker-vm | grep "NIC.* Rule"
    

    10-05 19:08