我知道我可以使用boot2docker ip
或docker-machine ip
来获取boot2docker / docker-machine VM的已分配IP地址。
根据我的理解,默认IP地址是:
以下是我的相关问题:
boot2docker
或docker-machine
时,我是否可以依赖VM始终使用相同的IP地址?我问,因为我想将boot2docker shellinit
或docker-machine env dev
创建的环境变量存储在我用户的个人资料中,所以我不必运行每次启动/停止VM时都会执行这些命令。
答案 0 :(得分:1)
我一直在使用boot2docker大约一年。我已经将boot2docker ip设置为其他几次,并且无法确切地告诉您原因。如果我不得不猜测,我会说这是因为boot2docker重新启动了,但是之前的一些实例并没有很好地死掉并且还在占用ip,所以它转到了.104。
无论如何,要始终保持安全,我每次使用时都会获得当前的boot2docker ip:
export DOCKER_HOST=`boot2docker ip 2>/dev/null`
答案 1 :(得分:1)
你绝对不能依赖。我一直在玩本地的docker-machine与virtualbox驱动程序,我注意到的是docker-machine分配的ip地址取决于机器启动的顺序。第一台启动的机器获得.100(即使它在119之前)。
答案 2 :(得分:0)
对我来说,docker-machine可靠地只使用.100 IP地址。但是,我只在该网络子网上一次启动一个docker-machine VM。
一个想法是在不同的主机网络子网上运行每个VM,因此它始终是网络上唯一具有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"