12

在 Vagrant VM 中工作并进行一些更改后,我将使用 vagrant suspend 挂起 VM。如果我然后重新启动主机然后尝试运行 vagrant resume,终端会坐一会儿,然后将我带回命令提示符而没有任何反馈。所以,我自然会尝试 vagrant ssh,我收到以下信息:

VM 必须正在运行才能打开 SSH 连接。运行vagrant up以启动虚拟机。

如果我运行 vagrant up,我会发现我在挂起之前所做的所有更改都已被基本框导入覆盖。

这是预期的行为吗?我是流鼻涕的 Windows 8 pro x64。

4

4 回答 4

6

vagrant 的想法是使用基本框,然后使用配置方法进行自定义。因此,始终 a vagrant destroy(删除 VM 的所有数据)并vagrant up基于基本框再次构建该框应该可以工作。

无论如何,你没有做vagrant destroy数据应该仍然存在。

如果你这样做了vagrant suspend,这意味着盒子状态被虚拟盒子冻结。

接下来,你应该做一个vagrant resumehttp ://docs.vagrantup.com/v2/cli/resume.html

但是,如果您vagrant up在两者之间进行了操作,则数据可能会丢失。您可以打开 VirtualBox GUI,看看是否还有一些保留的快照。

于 2013-07-17T13:53:27.530 回答
4

这种情况时不时地发生在我身上,我重新启动并且不再有我的流浪机器的痕迹。即使正在运行vboxmanage list vms也不会显示我的虚拟机,但是如果我再次重新启动计算机,这次我在尝试之前打开 Virtualbox GUI vboxmanage list vms(或者不先打开它,具体取决于上次尝试失败的方式),它会列出我的Vagrant 机器及其 ID。

有了这个 ID,我可以进入 .vagrant/machines/default/virtualbox/ 并创建一个名为“id”的文件并添加一行包含 vagrant 机器的 id。之后你可以开始它,vagrant up添加 --no-provision 可能是最安全的,尽管它已经开始配置,即使机器已经存在..

于 2015-01-26T12:41:15.827 回答
2

我建议为您计划使用的每个 VM 创建一个项目目录。如果您在为该项目/虚拟机创建vagrant init专用目录之前更改为该空项目目录Vagrantfile,则可以根据您的需要对其进行自定义。要使用自定义Vagrantfile的,只需vagrant up从您的项目目录中运行。不确定这是否能解决您的问题,但我想值得一试。;-)

顺便提一句。您可以使用命令检查您的虚拟机是否正在运行vagrant status [machine-name]

于 2013-07-15T12:13:02.060 回答
1

我最近遇到了类似的情况,最终发现有一种情况是“流浪者挂起”有效地破坏了虚拟机。那是在以 Virtual Box 4.3.14 作为虚拟化提供程序的 Windows 主机上运行 Vagrant。将 Virtual Box 回滚到 4.3.12 是解决此问题的一种方法。详细信息: https ://github.com/mitchellh/vagrant/issues/4276

于 2014-08-22T06:43:01.970 回答