有没有一种方法可以强制docker-machine用特定的IP创建虚拟机?
是否有一种方法可以强制docker-machine使用特定的IP创建docker vm(假设该IP可用)?
回答:
在问题1709中主动请求docker/machine
当我使用docker-machine create创建虚拟机时,我希望能够指定VM的IP地址(即docker-machine ls中“
URL”下列出的值)。
我想要这个是因为我一直依赖boot2docker的默认地址192.168.59.103,但是现在它随计算机的不同而不同。
在目前的解决方法:
我的virtualbox的dhcp范围为192.168.99.100-255,我想在100之前设置IP。
我发现了一个设置静态IP的简单技巧:创建机器后,我运行以下命令并重新启动机器:
echo "ifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh prova-discovery sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null
此命令创建一个文件
bootsync.sh
,该文件可通过boot2docker
启动脚本进行搜索并执行。现在,在计算机引导过程中,将执行命令并设置静态IP。
docker-machine lsNAME ACTIVE DRIVER STATE URL SWARM
test-1 - virtualbox Running tcp://192.168.99.50:2376 test-1 (master)
Michele Tedeschi(micheletedeschi
)
添加
我用以下命令更新了命令:
echo "kill `more /var/run/udhcpc.eth1.pid`\nifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh prova-discovery sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null
然后运行命令(仅第一次)
docker-machine regenerate-certs prova-discovery
现在IP不会被DHCP更改
(用prova-discovery
您的docker-machine的名称替换)
dmvbf.bat
根据以上内容,这是我现在使用的(Windows)脚本():
@echo offsetlocal 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.x.y^)
exit /b 2
)
set ipy=%3
if "%ipy%" == "" (
echo dmvbf y missing ^(for 192.168.x.y^)
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
echo route add default gw <gateway ip address here> | docker-machine ssh %machine% sudo tee /bar/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"
(注:在Windows 10,评论,这是 不是udhcpc.eth1.pid
)
我启动vm(docker-machine start <machine-name>
),然后:
dmvbf <machine-name> 99 101
我只做一次。
接下来docker-machine start <machine-name>
,IP将为192.168.99.101。
以上是 有没有一种方法可以强制docker-machine用特定的IP创建虚拟机? 的全部内容, 来源链接: utcz.com/qa/425098.html