7

当我意识到我需要通过端口 8000 访问它来测试 Web 界面时,我正在使用 Vagrant 设置的虚拟机,所以我这样做vagrant halt是为了修改 Vagrantfile 并转发端口 8000 然后我保存了文件并做了vagrant up 启动备份该机器,令我惊讶的是,Vagrant 从头开始​​构建了一台新机器。现在,当我查看名为“VirtualBox VMs”的文件夹时,我可以看到两个具有相同名称的 VM + 一个不同的长数字。我相信一台是我想用我所有的包和设置启动的第一台机器,而另一台是新的空机器。我怎样才能切换回第一个,所以当我这样做时vagrant up它实际上会启动那个?并且可选地,我如何摆脱新的、空的?

4

2 回答 2

8

我的理解是每个 Vagrant 项目目录(的主目录Vagrantfile)都与 VirtualBox(默认提供程序)中由 vagrant 管理的虚拟机相关联。通常采用“baseboxname_id”的模式。

您的问题可能是由旧 Vagrant 版本中的错误引起的。请确保您运行的是最新的 Vagrant 1.3.3 + VirtualBox 4.2.18。或者,可能混合了多个Vagrantfile(根据您的描述不太可能是这种情况)。

找出 vagrant box 的 ID

  1. 将目录更改为所在的Vagrantfile位置
  2. 查看 => 的内容 /path/to/Vagrantfile/.vagrant/.vagrant/machines/default/virtualbox/id,你会得到一个类似的 id a90df491-4c25-4a07-be1a-be137908058c

    注意:这是uuid与 VirtulBox 管理的 Vagrantfile 关联的虚拟机。

摆脱新的/空的虚拟机

现在你知道了uuid,你可以unregister虚拟机并删除它=> VBoxManage unregistervm <uuid> --delete

重新Vagrantfile与第一个 VM关联

  1. 获取由 VirtualBox 管理的 VM 名称和 uuid 列表
  2. 用第一个虚拟机的 uuid 替换 id/path/to/Vagrantfile/.vagrant/.vagrant/machines/default/virtualbox/id
  3. 启动第一个虚拟机 =>vagrant up
  4. 完毕!
于 2013-10-01T06:58:04.990 回答
0

如上所述,使用以下内容收集所需的 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?

希望这对找到它的人有所帮助。

于 2014-10-11T07:52:07.463 回答