如何使用docker-machine和VirtualBox创build具有特定URL的Docker机器?

我可以使用VirtualBox驱动程序创build一个Docker实例,但我无法弄清楚如何指定URL。

创build命令:

docker-machine create --driver virtualbox myBox 

docker机ls:

 NAME ACTIVE DRIVER STATE URL SWARM myBox * virtualbox Running tcp://192.168.99.100:2376 

我想要的URL是一个特定的url。 我如何强制Docker实例使用特定的URL(例如:192.168.99.113)?

详细信息:使用Docker Toolbox的Mac 10.10.5

更新

我尝试使用--virtualbox-hostonly-cidr命令设置泊坞窗机器的IP范围; 我指定了一个IP地址范围(“192.168.99.113/32”),但创build的机器的IP地址为192.168.99.100,这是我提供的范围之外。

是否有可能设置具有特定IP地址的docker机?

我们前段时间也遇到同样的问题,试图改变docker机器中的默认docker IP,我们发现只有两种方式,如何做。

  1. 您可以调用docker机器的create命令来创build带有标志的Docker实例

    --virtualbox-hostonly-cidr "192.168.99.1/24"

    这个标志设置了一个可以为Docker实例设置的地址范围。 没有保证,你得到你想要的地址

  2. 您可以更改虚拟机的networking设置,并为其留下NAT和端口转发,从而使您的Docker实例像在主机OS上安装一样运行。

当然,第一个是标准的方法,似乎是可取的。 但在某些情况下,第二个也可能是有用的。

更新:有一个开放function请求,用于指定泊坞机的静态IP。 所以,不幸的是现在无法做到这一点。 只有 – --virtualbox-hostonly-cidr属性,但是你必须提供一个低于29的CIDR前缀才能使它工作(Win版本testing)。 或者看一下这个注释 ,在哪里显示,如何通过configurationVirtual Box来完成这个操作,比如:

 $ VBoxManage dhcpserver modify --ifname vboxnet0 --disable $ VBoxManage dhcpserver modify --ifname vboxnet0 --ip 192.168.59.3 --netmask 255.255.255.0 --lowerip 192.168.59.103 --upperip 192.168.59.203 $ VBoxManage dhcpserver modify --ifname vboxnet0 --enable $ docker-machine create --driver "virtualbox" --virtualbox-cpu-count "-1" --virtualbox-disk-size "30000" --virtualbox-memory "2560" --virtualbox-hostonly-cidr "192.168.59.3/24" dev 

等待问题1709的解决scheme,我使用以下脚本(一个Windows,适应于Mac)。
(来源: imranraja85和micheletedeschi的评论 )

 dmvbf.bat: @echo off setlocal enabledelayedexpansion set machine=%1 if "%machine%" == "" ( echo dmvbf expects a machine name exit /b 1 ) set ipx=%2 if "%ipx%" == "" ( echo dmvbf x missing ^(for 192.168.xy^) exit /b 2 ) set ipy=%3 if "%ipy%" == "" ( echo dmvbf y missing ^(for 192.168.xy^) exit /b 3 ) echo kill $(more /var/run/udhcpc.eth1.pid) | docker-machine ssh %machine% sudo tee /var/lib/boot2docker/bootsync.sh >NUL echo ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up | docker-machine ssh %machine% sudo tee -a /var/lib/boot2docker/bootsync.sh >NUL docker-machine ssh %machine% "sudo cat /var/run/udhcpc.eth1.pid | xargs sudo kill" docker-machine ssh %machine% "sudo ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up" 

我启动docker-machine start <machine-name>docker-machine start <machine-name> ),然后:

 dmvbf <machine-name> 99 101 

我只做一次。

在下一个docker-machine start <machine-name> ,IP将是192.168.99.101。

根据docker / machine 特性请求线程的讨论,我们编写了下面的脚本 :

 Usage: docker-machine-ipconfig <command> args... Commands: ls List running docker-machines' ip addresses static <machine> [ip-address] Configure <machine> to use a static IP address (default is current address) dhcp <machine> Configure <machine> to use DHCP client to gather IP address hosts Update /etc/hosts file