当前位置:  开发笔记 > 后端 > 正文

有没有办法强制docker-machine用特定的ip创建vm?

如何解决《有没有办法强制docker-machine用特定的ip创建vm?》经验,为你挑选了1个好方法。

有没有办法强制docker-machine用特定的ip创建docker vm(假设ip可用)?



1> VonC..:

这在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.shboot2docker启动脚本搜索并执行的文件.

现在在机器启动期间执行命令并设置静态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 ),然后:

 dmvbf  99 101

我这样做只有一次.

接下来docker-machine start ,IP将是192.168.99.101.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有