boot2docker 和 docker 机器 IP 地址如何 stable/reliable?

How stable/reliable are the boot2docker and docker-machine IP addresses?

我知道我可以使用 boot2docker ipdocker-machine ip 来获取分配给 boot2docker/docker-machine VM 的 IP 地址。

据我了解,默认 IP 地址为:

以下是我的相关问题:

我问是因为我想在我的用户配置文件中存储由 boot2docker shellinitdocker-machine env dev 创建的环境变量,所以我不必 运行 这些命令每次我 start/stop 虚拟机。

我已经使用 boot2docker 大约一年了。我已经将 boot2docker ip 设置为其他几次,但无法告诉您确切原因。如果非要我猜的话,我会说这是因为 boot2docker 重新启动了,但之前的一些实例并没有很好地死掉并且仍在占用 ip,所以它变成了 .104。

无论如何,为了安全起见,每次我开始新的东西时,我只是获取当前的 boot2docker ip:

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

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

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

一个想法是 运行 每个 VM 位于不同的 host-only 网络子网上,因此它始终是网络上唯一具有 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 访问它。

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

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