Vagrant错误 - 名称已存在的VirtualBox计算机

时间:2016-05-11 14:34:46

标签: vagrant virtualbox

我想使用ubuntu/xenial64框为两个单独的项目创建两个单独的VM。我在两个单独的项目目录中定义了Vagrantfile,并将行config.vm.box = "ubuntu/xenial64"添加到每个目录中。

第一个盒子成功启动。但是当我为第二个项目vagrant up时,我收到了错误

A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists.

在Vagrant的文档中,它写得很清楚

  

为当前用户全局存储框。每个项目都使用一个   框作为要克隆的初始图像,并且永远不会修改实际图像   基本形象。这意味着,如果你有两个项目都使用   我们刚添加的hashicorp / precise64框,在一个guest虚拟机中添加文件   机器对其他机器没有影响。

为什么我会收到此错误?

我已经检出了other similar questions,但我不理解他们删除看似具有相同名称的现有虚拟机的解决方案。根据上面的Vagrant文​​档引用,这不应该是必要的。我错过了什么吗?

2 个答案:

答案 0 :(得分:19)

您不需要删除其他虚拟机,实际上您当然可以在同一个虚拟机中拥有多个虚拟机。

您的错误可能与在VirtualBox中创建的VM的VirtualBox名称有关,如果您在您的2个项目中覆盖了一个属性来设置此名称及其名称,则会发生冲突,请参阅此{{ 3}}查看定义VM名称的不同方法

所以要么让vagrant定义VM的名称,要么确保在不同的项目中有唯一的VM名称,它会运行得很好

<强>更新 我检查这个特殊的框,它包含以下Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.base_mac = "02101FC67BA9"
  config.ssh.username = "ubuntu"
  config.ssh.password = "c1580f876b655137c6c35b69"
  config.vm.synced_folder '.', '/vagrant', disabled: true

  config.vm.provider "virtualbox" do |vb|
     vb.name = "ubuntu-xenial-16.04-cloudimg"
     vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ]
     vb.customize [ "modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "%s-console.log" % vb.name) ]
  end
end

所以请确保在您的Vagrantfile中覆盖此属性

  config.vm.provider "virtualbox" do |vb|
     vb.name = "your specific project name"

并将vb.name更改为每个项目的唯一。

答案 1 :(得分:2)

我发现编辑原始框AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); p.setScrollFlags(0); toolbar.setLayoutParams(p); (位于Vagrantfile)更简单,而不是每次都考虑唯一的VM名称。

Vagrantfile的工作配置(框!):

~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/<VERSTION>/virtualbox/Vagrant‌​file