boot2docker和docker-machine IP地址的稳定性/可靠性如何?

我知道我可以使用boot2docker ipboot2docker ip docker-machine ip来获取boot2docker / docker-machine虚拟机的分配IP地址。

从我所了解的默认IP地址是:

  • boot2docker:192.168.59.103
  • docker机:192.168.99.100

这是我的问题:

  • 我能否假设这些地址一般都会被使用,除非在同一个networking/主机上与其他设备/虚拟机有冲突?
  • 在同一台docker-machine上停止/启动boot2dockerboot2docker docker-machine时,我可以依赖于VM始终使用相同的IP地址吗?

我在问,因为我想将由boot2docker shellinitboot2docker shellinit docker-machine env dev创build的环境variables存储在我的用户configuration文件中,所以我不必在每次启动/停止VM时都运行这些命令。

你绝对不能依靠。 我一直在使用virtualbox驱动程序在本地的docker-machine上玩,我注意到docker-machine分配的IP地址取决于机器启动的顺序。 第一台启动的机器获得.100(即使在119之前)。

我一直在使用boot2docker大约一年。 我已经把boot2docker ip设置为别的东西了几次,不能确切地告诉你为什么。 如果我不得不猜测,我会说这是因为boot2docker重新启动,但以前的一些实例并没有很好地死亡,并仍然占用了IP,所以它改为.104。

无论如何,为了保持安全,我每次开始使用新的东西时,都会得到当前的boot2docker ip:

 export DOCKER_HOST=`boot2docker ip 2>/dev/null` 

对我来说,docker机器可靠地只使用.100的IP地址。 但是,我只能在该networking子网上一次启动一台docker-machine虚拟机。

一个想法是在不同主机的networking子网上运行每个虚拟机,所以它将永远是networking上唯一具有IP的实例,并且始终是.100

 docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.59.1/24" default docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.60.1/24" default2 

另一个想法是在虚拟盒子NAT适配器上设置端口转发,这样你就可以随时从主机的IP地址获得IP地址。

 VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22" 

https://www.virtualbox.org/manual/ch06.html#natforward