我想使用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框,可在一个来宾中添加文件
机器对另一台机器无效。
为什么我会收到此错误?
我已经签出了other similar questions,但是我不明白他们删除现有具有相同名称的VM的解决方案。根据上面的Vagrant文档报价,这不是必需的。我想念什么吗?
最佳答案
您不需要删除其他VM,并且确实可以在同一框中包含多个VM。
您的错误可能与在VirtualBox中创建的VM的VirtualBox名称有关,如果您有覆盖属性以在2个项目上设置此名称及其相同的名称,则将发生冲突,请参见此answer定义虚拟机名称的不同方法
因此,要么让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
更改为每个项目都唯一的。关于vagrant - Vagrant 错误-名称已经存在的VirtualBox计算机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37165846/