Vagrant把它的。box文件下载到哪里?

执行以下命令后,.box文件会发生什么?

vagrant box add lucid32 http://files.vagrantup.com/lucid32.box

下载完成后,我在文件系统上找不到lucid32.box文件。

170737 次浏览

正如的文档中提到的,盒子存储在:

  • Mac OS X和Linux: ~/.vagrant.d/boxes
  • Windows: C:/Users/USERNAME/.vagrant.d/boxes

在Windows上,位置可以在这里找到。我没有在互联网上找到任何关于这个的文档,这对我来说并不是很明显:

C:\Users\\{username}\\.vagrant.d\boxes

在Mac/Linux系统上,成功下载的方框位于:

~/.vagrant.d/boxes

不成功的盒子位于:

~/.vagrant.d/tmp

在Windows系统中,它位于Users文件夹下:

C:\Users\%userprofile%\.vagrant.d\boxes

希望这能有所帮助。谢谢

要改变路径,你可以设置一个新的路径为一个名为: VAGRANT_HOME < / p >
export VAGRANT_HOME=my/new/path/goes/here/

这也许很好,如果你想有那些流浪图像在另一个硬盘。

更多信息请参见文档:http://docs.vagrantup.com/v2/other/environmental-variables.html

实际的.box文件被Vagrant删除一旦下载和盒子安装完成。正如在其他答案中提到的,在下载时,.box文件被存储为:

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

其中文件名是“box”,后面跟着一个40字节的十六进制散列。例如,我系统上的一个临时文件是:

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

据我所知,这个文件从来没有用*.box扩展名保存,这解释了为什么上面的搜索没有找到它。有两种方法来检索实际的box文件:

  1. < p > 从vagrantcloud.com下载。box文件

    1. 阿特拉斯上找到你感兴趣的盒子。例如, 李https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1 < / >
    2. 将域名替换为vagrantcloud.com。所以https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1 李变得https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box。< / >
    3. /providers/virtualbox.box添加到URL的末尾。所以https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1变成了https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
    4. 保存.box文件
    5. 如你所愿使用.box,例如,自己托管它并将config.vm.box_url指向URL。
    6. 李< / ol > < / >
    7. < p > 直接从流浪者那里拿到。盒子

      这需要您修改ruby源代码,以防止Vagrant在成功下载后删除盒子。

      1. 找到box_add。rb文件在您的Vagrant安装目录。在我的系统中,它位于/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
      2. 找到box_add函数。在box_add函数中,有这样一个块:
        < p >确保 #确保我们在添加临时文件后删除它, 除非我们被打断,在这种情况下,我们保持它在附近 #以便稍后继续下载。 如果@download_interrupted ! @logger.debug("删除临时框:#{box_url}") 开始 如果box_url.delete 救援Errno:: ENOENT #没什么大不了的,临时文件可能并不存在 结束 < / p >结束 李< /引用> < / >
      3. 注释掉这个块。
      4. 使用vagrant add box <boxname>添加另一个盒子。
      5. 等待下载。 你可以看到它在~/.vagrant.d/tmp/目录中保存为boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX文件。李< / >
      6. 将该文件重命名为更有用的内容。例如,mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box
      7. 李< / ol > < / >

      你为什么想要这个?

      对我来说,这对于检索.box文件非常有用,这样它就可以托管在本地,快速的基础设施上,而不是从HashiCorp的Atlas盒子目录另一个盒子供应商下载。

      这真的应该是默认Vagrant功能的一部分,因为它有一个非常明确的用例。

有一个更简单的方法来获取。box文件。

只要去https://atlas.hashicorp.com/boxes/search,搜索你想下载的盒子。注意方框的URL,例如:

https://atlas.hashicorp.com/ubuntu /盒/ trusty64 /版本/ 20150530.0.1

然后你可以像这样使用URL下载这个框:

https://vagrantcloud.com/ubuntu /盒/ trusty64 /版本/ 20150530.0.1 /供应商/ virtualbox.box

我尝试并成功下载了我需要的所有盒子。希望能有所帮助。

除了

Mac:
~/.vagrant.d/


Windows:
C:\Users\%userprofile%\.vagrant.d\boxes

您必须删除VirtualBox/OtherVMprovider中的文件才能重新开始。

在带有2.2.2的流浪汉Windows 10上,设置环境变量VAGRANT_HOME将确保盒子被下载到为VAGRANT_HOME指定的文件夹的子文件夹中。

在我的例子中,我将VAGRANT_HOME设置为e:\vagrant_home,并且盒子存储在e:\vagrant_home\boxes下。

这对我很有用。

这就是盒子存储的地方。虚拟机正在Virtual Box中配置的文件夹中创建。设置VirtualBox虚拟机存储文件夹,执行:VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder