如何使用 docker-machine 和 VirtualBox 创建具有特定 URL 的 docker 机器?
How do I create a docker machine with a specific URL using docker-machine and VirtualBox?
我可以使用 VirtualBox 驱动程序创建一个 Docker 实例,但我不知道如何指定 URL。
创建命令:
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)?
详细信息: Mac 10.10.5 使用 Docker 工具箱
更新
我尝试使用 --virtualbox-hostonly-cidr
命令为 docker 机器设置 IP 范围;我指定了一个 IP 地址范围(“192.168.99.113/32”),但创建的机器的 IP 为 192.168.99.100,超出了我提供的范围。
甚至可以设置具有特定 IP 地址的 docker 机器吗?
我们前段时间遇到了同样的问题,试图更改 docker 机器中的默认 docker IP,但我们发现只有两种方法,如何做。
您可以调用 docker 机器的创建命令来创建带有标志
的 Docker 实例
--virtualbox-hostonly-cidr "192.168.99.1/24"
此标志设置地址范围,可以为 Docker 实例设置。不保证,你得到你想要的地址
您可以更改虚拟机的网络设置,为其保留 NAT 和端口转发,使您的 Docker 实例 运行 就像安装在主机上一样 OS.
当然,第一种是标准方法,似乎更可取。但在某些情况下,第二个也很有用。
更新:
有一个打开的 feature request for specifying a static IP for docker machine. So, unfortunately it's not possible to do it right now. Only --virtualbox-hostonly-cidr
property, but you have to provide a CIDR Prefix below 29 to make it works (tested for Win version). Or take a look at this comment,显示在哪里,如何通过配置 Virtual Box 为 OS X 做到这一点,例如:
$ 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
等待 issue 1709 的决议,我使用以下脚本(一个 Windows 脚本,以适应 mac)。
(来源:imranraja85 and micheletedeschi's comment)
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.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
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>
),然后:
dmvbf <machine-name> 99 101
我只做过一次。
在下一个 docker-machine start <machine-name>
,IP 将是 192.168.99.101。
基于 docker/machine feature request thread we wrote the following script 的讨论:
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
我可以使用 VirtualBox 驱动程序创建一个 Docker 实例,但我不知道如何指定 URL。
创建命令:
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)?
详细信息: Mac 10.10.5 使用 Docker 工具箱
更新
我尝试使用 --virtualbox-hostonly-cidr
命令为 docker 机器设置 IP 范围;我指定了一个 IP 地址范围(“192.168.99.113/32”),但创建的机器的 IP 为 192.168.99.100,超出了我提供的范围。
甚至可以设置具有特定 IP 地址的 docker 机器吗?
我们前段时间遇到了同样的问题,试图更改 docker 机器中的默认 docker IP,但我们发现只有两种方法,如何做。
您可以调用 docker 机器的创建命令来创建带有标志
的 Docker 实例--virtualbox-hostonly-cidr "192.168.99.1/24"
此标志设置地址范围,可以为 Docker 实例设置。不保证,你得到你想要的地址
您可以更改虚拟机的网络设置,为其保留 NAT 和端口转发,使您的 Docker 实例 运行 就像安装在主机上一样 OS.
当然,第一种是标准方法,似乎更可取。但在某些情况下,第二个也很有用。
更新:
有一个打开的 feature request for specifying a static IP for docker machine. So, unfortunately it's not possible to do it right now. Only --virtualbox-hostonly-cidr
property, but you have to provide a CIDR Prefix below 29 to make it works (tested for Win version). Or take a look at this comment,显示在哪里,如何通过配置 Virtual Box 为 OS X 做到这一点,例如:
$ 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
等待 issue 1709 的决议,我使用以下脚本(一个 Windows 脚本,以适应 mac)。
(来源:imranraja85 and micheletedeschi's comment)
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.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
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>
),然后:
dmvbf <machine-name> 99 101
我只做过一次。
在下一个 docker-machine start <machine-name>
,IP 将是 192.168.99.101。
基于 docker/machine feature request thread we wrote the following script 的讨论:
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