删除 .vagrant 文件后如何销毁虚拟机?

Posted

技术标签:

【中文标题】删除 .vagrant 文件后如何销毁虚拟机?【英文标题】:How do I destroy a VM when I deleted the .vagrant file? 【发布时间】:2013-03-02 18:49:10 【问题描述】:

我删除了包含 .vagrant 文件的目录。当我启动一个新虚拟机时,它抱怨端口正在使用中。那么如何在没有 .vagrant 文件的情况下销毁 VM?

【问题讨论】:

一个共享的问题是一个问题减半:做了完全相同的愚蠢问题,再次感谢 SO 立即解决...... 【参考方案1】:

以下 VirtualBox 命令可能会有所帮助。如果 poweroff 不起作用,请尝试 unregistervm。

$ VBoxManage list runningvms
$ VBoxManage controlvm <uuid> poweroff
$ VBoxManage unregistervm <uuid>

来源:https://support.cloud.engineyard.com/entries/21449637-I-deleted-Vagrantfile-vagrant-and-or-the-app-directory-before-halting-the-VM-Now-ey-local-up-errors-

Shell 脚本停止所有正在运行的虚拟机:

VBoxManage list runningvms | awk 'print $2;' | xargs -I vmid VBoxManage controlvm vmid poweroff

【讨论】:

这些命令肯定会破坏虚拟机。但是他们仍然在“vagrant global-status”中为机器留下了一个条目。 @ValkoSipuli 试试vagrant global-status --prune。见***.com/a/24446866/300836 在我的例子中,我使用了一个细微的变化:VBoxManage list vms; VBoxManage discardstate &lt;uuid&gt;; VBoxManage unregistervm &lt;uuid&gt; 使用vboxmanage unregistervm --deletevagrant destroy 一样物理删除VM【参考方案2】:

最简单的做法是启动 VirtualBox 的 GUI 客户端并移除(可能在关闭后)虚拟机。您只需右键单击虚拟机并执行这些操作。

【讨论】:

如果您通过 ssh 进入您的开发箱或仅从命令行工作,则不会。此外,如果您 alias killvms="VBoxManage list runningvms | awk 'print \$2;' | xargs -I vmid VBoxManage controlvm vmid poweroff" 您只需要键入 killvms 而不是启动并等待 GUI。 我假设通常开发人员在他们的本地机器上使用 Vagrant 并且仍然在后台某处运行 GUI :) 你的假设是错误的!但既然你住得离我这么近,我就放这一张吧。嗨,开个玩笑,对于在本地运行 vagrant 的人来说,这仍然是一个很好的答案。【参考方案3】:

如果您使用 GUI 删除了 VM,但仍然出现错误,您可以尝试从“%userprofile%\VirtualBox VMs”中删除指定的 VM。这对我有用

【讨论】:

【参考方案4】:

以下 bash 函数将关闭并销毁与当前用户的所有 VM 相关的所有文件:

function killvms() 
  VBoxManage list runningvms | awk 'print $2;' | xargs -I vmid VBoxManage controlvm vmid poweroff
  VBoxManage list vms | awk 'print $2;' | xargs -I vmid VBoxManage unregistervm --delete vmid

将它添加到您的~/.bash_aliases 并通过killvms 在您的shell 中调用它。

【讨论】:

以上是关于删除 .vagrant 文件后如何销毁虚拟机?的主要内容,如果未能解决你的问题,请参考以下文章

Vagrant使用

vagrant常用命令

每次使用 vagrant up 时我都必须删除导出文件

如何导出 Vagrant 虚拟机进行传输

Vagrant安装完lnmp后,配置linux和windows共享文件并配置虚拟主机访问项目

vagrant package 打包自己的box镜像