Vagrant 说 'not created'。如何添加新的 box 文件?

Vagrant says 'not created'. How do I add a new box file?

我正在我的 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)

正在启动 virtualbox 管理器,它没有显示 'dev2' 的信息。

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

如何在现有环境之外添加新盒子?

提前谢谢你。

您在 vagrant 配置中添加的框与您在 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 和虚拟机有些混淆。

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

我也收到了同样的消息,在尝试了每个 Vagrant's guide.

的 vagrant package --base 命令之后
$ vagrant package --base my-virtual-machine
`VM not created. Moving on...`

具体来说,要使其正常工作,您必须检查并使用您可能通过 Vagrantfile 预设的确切名称,并且 config.vm.name =“您选择的名称”。您还将看到它显示在 VirtualBox 中(除非您更改了它)。

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

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

PS C:\Users\USER\OneDrive\Documents\Projects\Vagrant2> vagrant package --base Vagrant2_default_1598799939605_1106
==> Vagrant2_default_1598799939605_1106: Exporting VM...
==> Vagrant2_default_1598799939605_1106: Compressing package to: C:/Users/USER/OneDrive/Documents/Projects/Vagrant2/package.box