【问题标题】:Vagrant error - A VirtualBox machine with the name already existsVagrant 错误 - 同名的 VirtualBox 机器已经存在
【发布时间】:2016-05-11 14:34:46
【问题描述】:

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

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

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

在 Vagrant 的文档中明确写到

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

为什么会出现这个错误?

我已经查看了other similar questions,但我不明白他们删除似乎同名的现有虚拟机的解决方案。根据上面的 Vagrant 文档引用,这不是必需的。我错过了什么吗?

【问题讨论】:

  • 我感觉这与盒子 ubuntu/xenial64 的创建方式有关。我用另一个盒子gbarbieru/xenial 重复了相同的实验,并且在创建多个虚拟机时没有这样的问题。当我看到 VirtualBox GUI 时,我看到 VM 名称在启动时自动重命名为包含文件夹的名称。
  • 有什么方法可以指定名称而不直接编辑框?我更喜欢使用默认的上游设置,让 vagrant 将所有这些抽象出来......那我宁愿能够在 git checkout 之后立即打开我的盒子,而不必结帐然后编辑盒子的 VagrantFile

标签: vagrant virtualbox


【解决方案1】:

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

您的错误可能与在 VirtualBox 中创建的虚拟机的 VirtualBox 名称有关,如果您已经覆盖了一个属性以在您的 2 个项目上设置此名称及其相同的名称,那么将会发生冲突,请参阅@987654321 @查看定义VM名称的不同方式

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

更新 我选中了这个特定的框,它包含以下 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 更改为对您的每个项目都是唯一的。

【讨论】:

  • 菜鸟问题:你是如何设法查看ubuntu/xenial64的Vagrantfile的?
  • 它在~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/20160509.0.0/virtualbox/Vagrantfile
  • 谢谢 - 我只是从盒子的 Vagrantfile 中删除了硬编码的 vb.name 并且现在能够正常启动多个 vagrant 实例。
  • 这个(加上Virtualbox Guest Additions安装)会在下个版本的盒子里解决:bugs.launchpad.net/cloud-images/+bug/1565985
  • 我不知道,但是xenial box给我带来了很多麻烦。非常慢的启动,sudo apt-get 期间的错误 .. 和愚蠢的默认配置。
【解决方案2】:

我发现编辑原始框的Vagrantfile(位于~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/<VERSTION>/virtualbox/Vagrant‌​file)比每次都考虑唯一的VM名称更简单。

Vagrantfile 的工作配置(框!):

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

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 2014-08-28
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2015-11-25
    • 2020-06-18
    • 2015-07-25
    • 1970-01-01
    相关资源
    最近更新 更多