Jay*_*esh 14 virtualbox vagrant
我想使用ubuntu/xenial64box为两个单独的项目创建两个单独的VM.我在两个单独的项目目录中定义了Vagrantfile,并将行添加config.vm.box = "ubuntu/xenial64"到每个目录中.
第一个盒子成功启动.但是当我vagrant up为第二个项目做的时候,我得到了错误
A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists.
Run Code Online (Sandbox Code Playgroud)
在Vagrant的文档中,它写得很清楚
为当前用户全局存储框.每个项目都使用一个框作为初始图像进行克隆,并且永远不会修改实际的基本图像.这意味着如果您有两个项目都使用我们刚添加的hashicorp/precise64框,则在一台客户机中添加文件对其他机器没有影响.
为什么我会收到此错误?
我已经检查了其他类似的问题,但我不理解他们删除看似具有相同名称的现有虚拟机的解决方案.根据上面的Vagrant文档引用,这不应该是必要的.我错过了什么吗?
Fré*_*nri 19
您不需要删除其他VM,实际上您当然可以从同一个框中拥有许多VM.
你的错误可能与在VirtualBox中创建的虚拟机VirtualBox的名称做,如果你有覆盖一个属性来设置这个名字和你的2个项目的名称相同则会有冲突,看到这个答案,看不同定义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
Run Code Online (Sandbox Code Playgroud)
所以请确保在您的Vagrantfile中覆盖此属性
config.vm.provider "virtualbox" do |vb|
vb.name = "your specific project name"
Run Code Online (Sandbox Code Playgroud)
并将vb.name每个项目的更改设置为唯一.
| 归档时间: |
|
| 查看次数: |
10504 次 |
| 最近记录: |