如何使用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,我们发现只有两种方式,如何做。
-
您可以调用docker机器的create命令来创build带有标志的Docker实例
--virtualbox-hostonly-cidr "192.168.99.1/24"
这个标志设置了一个可以为Docker实例设置的地址范围。 没有保证,你得到你想要的地址
-
您可以更改虚拟机的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