有没有办法强制docker-machine用特定的ip创建docker vm(假设ip可用)?
这在1709号问题中得到了积极的要求docker/machine
我希望能够在使用docker-machine create创建VM时指定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 ls NAME 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
现在,DHCP不会更改IP
(替换prova-discovery
为泊坞机的名称)
这是dmvbf.bat
我现在使用的(Windows)脚本(),基于以上内容:
@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.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| 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上,Monty Wild 评论它udhcpc.eth0.pid
不是udhcpc.eth1.pid
)
我启动vm(docker-machine start
),然后:
dmvbf99 101
我这样做只有一次.
接下来docker-machine start
,IP将是192.168.99.101.