Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vagrant错误-名称为的VirtualBox计算机已存在_Vagrant_Virtualbox - Fatal编程技术网

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

Vagrant错误-名称为的VirtualBox计算机已存在,vagrant,virtualbox,Vagrant,Virtualbox,我想使用ubuntu/xenial64box为两个独立的项目创建两个独立的vm。我在两个单独的项目目录中定义了Vagrantfile,并在每个目录中添加了一行config.vm.box=“ubuntu/xenial64” 第一个箱子成功启动。但是当我为第二个项目做vagrant up时,我得到了错误 A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists. 在流浪汉的文件中清楚地写着 框为

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

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

A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists.
在流浪汉的文件中清楚地写着

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

那么为什么我会得到这个错误呢


我已经签出了,但我不理解他们删除似乎具有相同名称的现有虚拟机的解决方案。根据上面引用的流浪汉文件,这是没有必要的。我遗漏了什么吗?

您不需要删除另一个虚拟机,而且确实可以从同一个框中删除多个虚拟机

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

因此,要么让vagrant定义VM的名称,要么确保在不同的项目中有唯一的VM名称,这样它就会正常运行

更新 我选中这个特定的框,它包含以下文件

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
因此,请确保在您的文件中覆盖此属性

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

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

我发现编辑原始框的
vagrant文件
(位于
~/.vagrant.d/box/ubuntu-VAGRANTSLASH-xenial64//virtualbox/vagrant)更简单‌​而不是每次都考虑唯一的VM名称

文件(框!)的工作配置:


我觉得这与box
ubuntu/xenial64
是如何创建的有关。我用另一个box
gbarbieru/xenial
重复了相同的实验,其中一个在创建多个vm时没有这样的问题。当我看到VirtualBox GUI时,我看到VM名称在引导时自动重命名为包含文件夹的名称。是否有任何方法可以指定名称而不直接编辑该框?我更喜欢使用默认的上游设置,让流浪汉把所有这些抽象掉。。。我宁愿在git签出后立即打开我的盒子,而不必签出然后编辑盒子的Vagrant文件。noob问题:你是如何查看ubuntu/xenial64的Vagrant文件的
~/.vagrant.d/box/ubuntu-VAGRANTSLASH-xenial64/20160509.0.0/virtualbox/Vagrantfile
谢谢-我只是从box的vagrant文件中删除了硬编码的vb.name,现在可以正常启动多个vagrant实例。这(加上virtualbox Guest Additions安装)将在下一版本的box中解决:我不知道,但xenial box给我带来了很多麻烦。启动速度非常慢,sudo apt get期间出错。。和愚蠢的默认配置。
include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)
load include_vagrantfile if File.exist?(include_vagrantfile)

Vagrant.configure("2") do |config|
  config.vm.base_mac = "0223C61ABA59"
  config.ssh.username = "ubuntu"
  config.ssh.password = "86f7d0e04910475d8789aa8f"
  config.vm.synced_folder '.', '/vagrant', disabled: true

  config.vm.provider "virtualbox" do |vb|
     vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ]
  end
end