在OSX上通过docker-machine发现VirtualBox实例的正确网络接口

时间:2015-09-18 17:32:18

标签: macos networking virtualbox docker-machine

我试图自动化一个docker run shell脚本,该脚本需要在OSX / mac上使用虚拟机驱动程序启动在docker-machine VM上运行的X11应用程序。为了让x11应用程序将X11显示转发到桌面主机,我需要获取正确的vboxnet *(我假设)网络接口(而不是docker ip)的ip地址,并将该ip导出到docker容器中。

我目前正在做的是假设docker-machine VM ip绑定到“vboxnet1”接口名称并将其从ifconfig中取出来。

我看到启动docker-machine时旋转的虚拟机DHCP进程有一个与我想要的接口相对应的中继名称 - 但这再次看起来像是一个假设,我认为有一些命令可以运行到确定它是哪个地址所以我的docker run脚本可以在任何机器上运行。

/Applications/VirtualBox.app/Contents/MacOS/VBoxNetDHCP --ip-address    
192.168.99.2 --lower-ip 192.168.99.100 --mac-address XXXXXXXXXXX
  --netmask 255.255.255.0 --network HostInterfaceNetworking-vboxnet1 
--trunk-name vboxnet1 --trunk-type netadp --upper-ip 192.168.99.254

有没有办法明确确定哪个网络接口可以找到IP地址?

2 个答案:

答案 0 :(得分:0)

这个bash脚本似乎适用于OSX机器:

#!/bin/bash    
CONFIG=$( ifconfig | grep -A 2 'vboxnet1')

regex="([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})"

if [[ $CONFIG =~ $regex ]]; then
      DISPLAY=${BASH_REMATCH[1]}
      DISPLAY+=":0"
fi

答案 1 :(得分:-1)

ifconfig $(route -n get $(docker-machine ip default) | grep interface: | awk '{print $2}') | grep inet | awk '{print $2}'