允许通过docker-machine运行的容器与父OSX系统上的Mysql或XDEBUG端口连接,而不使用OSX DHCP分配的IP地址?

我有以下设置:

  • 运行在端口3306的所有networking适配器上监听的OSX
  • 启用XDEBUG的IDE在基本OSX系统上的端口9000上进行侦听。
  • docker-machine host在主机IP 192.168.99.100的OSX系统上运行
  • 一个基于Debian的docker容器,运行在docker主机上的mysql客户端以及运行xdebug的HHVM正在连接到端口9000上的一些幸运的远程主机。

由于通过DHCP分配的IP地址经常在OSX系统上更改,所以我希望docker容器能够以某种方式能够击中mysql服务器,而不pipe本地OSXnetworking适配器分配的IP是什么(无需手动更新)。 另外,我需要一个稳定的ip我可以提供我的HHVM server.ini文件的Xdebug远程主机。

在运行linux的基本系统时,这不是一个问题,因为docker主机和运行docker的本机运行是一样的。 另外,容器有几种方法可以学习主机的IP,所以问题并不在于docker主机。

但是,在运行docker-machine的OSX中,主机不是本地OSX系统,而是虚拟机中运行的虚拟机(假设你使用的是vb驱动程序,山姆大叔是谁?)。

我唯一能想到的是在3306端口转发请求到docker-machine主机(从未改变的192.168.99.100)到OSX的端口3306.然后让容器命中docker-machine主机寻求Mysql请求。 如果这个工程,我可以漂洗,并重复任何港口我需要链接像港口9000 xdebug端口。

有谁知道如何做到这一点或有另一个build议?

想出一条出路,而不需要做任何改变,提供一个一致的IP连接到基本的OSX系统上。 Docker机器以这种方式设置了这个可能性。

  • Docker机器使用2个networking适配器创build一个virtualbox虚拟机,其中一个设置为主机,另一个设置为NAT。 不知道它为什么创造2,但是
  • 只有主机的适配器提供OSX为192.168.99.1的IP,并且使用它的各个VM获得以192.168.99.100开头的地址。 但是,在虚拟机networking中,不能使用地址192.168.99.1来命中父OSX系统上的端口(不知道为什么,而是猜测主机只能是虚拟机之间的通信)。
  • NATnetworking适配器被设置,以便OSX获得IP 10.0.2.2和VM获得10.0.2.15。 通过NAT,您可以从Docker主机VM和主机上运行的容器中以10.0.2.2路由到OSX系统。

由于这个OSX机器的10.0.2.2地址不会改变(除非你使用虚拟盒子networking设置)bingo,得到我需要的东西。