删除 .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 <uuid>; VBoxManage unregistervm <uuid>
使用vboxmanage unregistervm --delete
像vagrant 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 文件后如何销毁虚拟机?的主要内容,如果未能解决你的问题,请参考以下文章