Vagrant说“没有创造”。如何添加新的盒子文件?

时间:2017-05-24 04:34:27

标签: vagrant virtual-machine virtualbox box

我正在Windows 10上创建一个带有vagrant的虚拟开发环境。我已经安装了名为'dev1'的盒子(它是CentOS7.0)。

我想添加一个名为'dev2'的新盒子(CentOS6.7)。

所以我尝试按下面的命令添加一个框

$ vagrant box add dev2 [box path]

之后,成功添加。

$ vagrant box list
dev1             (virtualbox, 2.3.1)
dev2             (virtualbox, 0)

然后我执行$ vagrant init'并编辑vagrantfile,如下所示

Vagrant.configure("2") do |config|

    config.vm.define "dev1" do |dev1|
      dev1.vm.hostname = "dev1"
      dev1.vm.box = "bento/centos-7.2"
      dev1.vm.network "private_network", ip: "192.168.33.11"
    end

    config.vm.define "dev2" do |dev2|
      dev2.vm.hostname = "dev2"
      dev2.vm.box = "bento/centos-6.7"
      dev2.vm.network "private_network", ip:"172.16.1.2"
    end
end

完成编辑,我输入了命令$ vagrant status,但它说:

Current machine states:
dev1                      poweroff (virtualbox)
dev2                      not created (virtualbox)

启动虚拟机管理器,它不显示'dev2'的信息。

当我尝试$ vagrant up dev2时,它开始下载CentOS6.7盒子文件而不是我之前添加的'dev2'...

除现有环境外,如何添加新框?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您在流浪汉配置中添加的框和您在Vagrantfile中使用的名称不匹配。

如果您已添加该框并为其指定了输出

$ vagrant box list
dev1             (virtualbox, 2.3.1)
dev2             (virtualbox, 0)

此名称必须与Vagrantfile中config.vm.box的值匹配,因此您需要在Vagrantfile中使用这些dev1dev2名称

Vagrant.configure("2") do |config|

    config.vm.define "dev1" do |dev1|
      dev1.vm.hostname = "dev1"
      dev1.vm.box = "dev1"
      dev1.vm.network "private_network", ip: "192.168.33.11"
    end

    config.vm.define "dev2" do |dev2|
      dev2.vm.hostname = "dev2"
      dev2.vm.box = "dev2"
      dev2.vm.network "private_network", ip:"172.16.1.2"
    end
end

在你的情况下,我不确定为什么你把盒子添加为dev1和dev2。看来你在vagrant box和VM之间存在一些混淆。

我建议您保留Vagrantfile,并参考便当盒,删除dev1 / 2框并运行vagrant up。 Vagrant将下载便当盒,将它们添加到您的配置中,并将启动dev1和dev2虚拟机。

答案 1 :(得分:0)

在每个Vagrant's guide尝试使用无所不在的package --base命令之后,我也收到了相同的消息。

DecimalFormat format = new DecimalFormat("¤#,##0.00", DecimalFormatSymbols.getInstance(Locale.US));
format.setParseBigDecimal(true);
BigDecimal number = (BigDecimal) format.parse(input);

要使其正常运行,必须检查并使用通过Vagrantfile和config.vm.name =“您选择的名称”预先设置的确切名称。您还将看到它显示在VirtualBox中(除非您更改了它)。

这是我的测试中显示的默认名称的屏幕截图示例。

Use Virtual Box name

我正在使用Powershell,所以这是我的输出:

$ vagrant package --base my-virtual-machine
`VM not created. Moving on...`