我试图自动化一个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地址?
答案 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}'