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

时间:2015-12-24 22:33:30

标签: docker virtualbox docker-machine

我已经完成了以下设置:

  • OSX运行MySQL侦听端口3306上的所有网络适配器
  • XDEBUG已启用IDE侦听基本OSX系统上的端口9000。
  • 使用主机IP 192.168.99.100
  • 在OSX系统上运行的docker-machine主机
  • 一个基于debian的docker容器,在docker主机上运行mysql客户端,运行xdebug的HHVM希望连接到端口9000上的一些幸运远程主机。

由于通过DHCP分配,ip地址在OSX系统上频繁更改,所以我希望docker容器能够以某种方式能够命中mysql服务器,无论本机OSX网络适配器分配了什么IP(没有手动更新它)。另外,我需要一个稳定的ip我可以为我的HHVM server.ini文件提供Xdebug的远程主机。

通过运行linux的基本系统,这不是一个问题,因为docker主机和运行docker的实际本地机器是同一个。此外,容器可以通过多种方式了解主机的IP,因此问题不会触及泊坞主机。

但是,在运行docker-machine的OSX中,主机不是本机OSX系统,而是在虚拟机中运行的VM(假设您正在使用vb驱动程序,以及山姆山的人员)火焰不是吗?)。

我唯一能想到的是将3306上的请求移植到Docker-machine主机(192.168.99.100,它永远不会改变)到OSX的端口3306。然后将容器命到docker-machine主机为Mysql请求。如果这个工作,我可以冲洗并重复我需要链接的任何端口,如xdebug在端口9000上。

有谁知道如何做到这一点或有其他建议?

1 个答案:

答案 0 :(得分:18)

找出一条出路,无需进行任何更改,提供一致的IP连接到基础OSX系统。 Docker机器以这样的方式进行设置,以实现这一目标。

  • Docker机器创建一个带有2个网络适配器的虚拟机VM,一个设置为仅主机,另一个设置为NAT。不知道为什么会创造2,但
  • 仅限主机的适配器为OSX提供192.168.99.1的IP,并且使用它的各种VM获取以192.168.99.100开头的地址。但是,在VM网络中,您不能使用地址192.168.99.1来命中父OSX系统上的端口(不确定原因,但猜测主机只打算只是VM之间的通信)。
  • 设置NAT网络适配器,以便OSX获得ip 10.0.2.2和VM获得10.0.2.15。使用NAT,您可以从Docker主机VM和主机上运行的容器路由到10.0.2.2的OSX系统。

由于这个OSX机器的10.0.2.2地址没有改变(除非你搞砸了虚拟盒网络设置)bingo,得到了我需要的东西。