当我意识到我需要通过端口 8000 访问它来测试 Web 界面时,我正在使用 Vagrant 设置的虚拟机,所以我这样做vagrant halt
是为了修改 Vagrantfile 并转发端口 8000 然后我保存了文件并做了vagrant up
启动备份该机器,令我惊讶的是,Vagrant 从头开始构建了一台新机器。现在,当我查看名为“VirtualBox VMs”的文件夹时,我可以看到两个具有相同名称的 VM + 一个不同的长数字。我相信一台是我想用我所有的包和设置启动的第一台机器,而另一台是新的空机器。我怎样才能切换回第一个,所以当我这样做时vagrant up
它实际上会启动那个?并且可选地,我如何摆脱新的、空的?
2 回答
我的理解是每个 Vagrant 项目目录(的主目录Vagrantfile
)都与 VirtualBox(默认提供程序)中由 vagrant 管理的虚拟机相关联。通常采用“baseboxname_id”的模式。
您的问题可能是由旧 Vagrant 版本中的错误引起的。请确保您运行的是最新的 Vagrant 1.3.3 + VirtualBox 4.2.18。或者,可能混合了多个Vagrantfile
(根据您的描述不太可能是这种情况)。
找出 vagrant box 的 ID
- 将目录更改为所在的
Vagrantfile
位置 - 查看 => 的内容
/path/to/Vagrantfile/.vagrant/.vagrant/machines/default/virtualbox/id
,你会得到一个类似的 ida90df491-4c25-4a07-be1a-be137908058c
。注意:这是
uuid
与 VirtulBox 管理的 Vagrantfile 关联的虚拟机。
摆脱新的/空的虚拟机
现在你知道了uuid
,你可以unregister
虚拟机并删除它=> VBoxManage unregistervm <uuid> --delete
。
重新Vagrantfile
与第一个 VM关联
- 获取由 VirtualBox 管理的 VM 名称和 uuid 列表
- 用第一个虚拟机的 uuid 替换 id
/path/to/Vagrantfile/.vagrant/.vagrant/machines/default/virtualbox/id
- 启动第一个虚拟机 =>
vagrant up
- 完毕!
如上所述,使用以下内容收集所需的 vm id:
`vboxmanagevm list vms`
然后将 $vagrant_base_dir/.vagrant/machines/default/virtualbox/id 的内容替换为所需的 id。
上面没有提到的是文件需要是单行,没有新行或回车: 尝试类似:
tr -d '\n' < id > id
找到了这个花絮How do I Associate a Vagrant project directory with an existing VirtualBox VM?
希望这对找到它的人有所帮助。