关闭不再配置的 vagrant box

Shutdown a vagrant box that is no longer configured

我最初创建了一个 Vagrantfile 来提供默认框。后来,我更新了 Vagrantfile 以使用配置略有不同的命名框 ("db")。不幸的是,我在配置新盒子之前忘记停止初始盒子。现在后台有一个 rogue vagrant box 运行 即使在重新启动主机后我也无法停止。

$ vagrant global-status
id       name    provider   state    directory                                                                 
---------------------------------------------------------------------------------------------------------------
6b855b0  default virtualbox running  /Users/chrisbloom7/Projects/rails-upgrade 
d348c3b  db      virtualbox poweroff /Users/chrisbloom7/Projects/rails-upgrade 

$ vagrant halt -f 6b855b0
The machine with the name 'default' was not found configured for
this Vagrant environment.

$ cat Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"

  config.vm.define "db", primary: true do |db|
    db.vm.provider :virtualbox do |vb|
      vb.name = "rails-upgrade-development-mysql"
    end

    # ...
  end
end

$ git show HEAD^:Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "box-cutter/ubuntu1004"

  config.vm.provider :virtualbox do |vb|
    vb.name = "rails-upgrade-development"
  end

  # ...
end

我已经检查了 VirtualBox,但我没有看到任何 运行 的盒子。 ps aux | grep vagrantps aux | grep virtualbox 也没有显示任何内容。

当我有一个无法与之通信的 Vagrant 盒子时,我会终止该进程。进程名称通常是 VBoxHeadless.exe 并且将在完整路径中包含该名称,您可以在其中进行 grep 查找。 ps aux | grep -i vbox | grep [put name here]

原来 vagrant global-status 输出显示了一个红色鲱鱼:它从 ~/.vagrant.d/data/machines-index/index 读取所有机器的状态。确实没有机器 运行 可以从使用 ps 命令(H/T 到@CEPA)没有进程出现这一事实证明,并且没有机器似乎是 运行 在 VirtualBox 应用程序中。这也解释了为什么即使在重新启动后它的状态仍然是 "running"。 运行 vagrant global-status --prune 清理了文件,从而清理了全局状态报告。