Vagrant 将其 .box 文件下载到哪里?
Posted
技术标签:
【中文标题】Vagrant 将其 .box 文件下载到哪里?【英文标题】:Where does Vagrant download its .box files to? 【发布时间】:2012-04-26 16:41:59 【问题描述】:执行以下命令后.box文件会发生什么?
vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
下载完成后在文件系统中找不到lucid32.box
文件。
【问题讨论】:
我想我完全没有理解你的意思,因为我首先想到的是sudo find / -name lucid32.box
。
正是我所做的,但我一定错过了一些东西,因为我无法使用这个确切的命令找到lucid32.box
...
可能不存在该名称。诸如*.box
之类的通配符搜索可能吗? (顺便说一句,扩展名不是.vbox
吗?)
是的,你是对的。搜索应为*.vbox
和not *.box
。谜团已揭开。 :-) 您想输入答案以便我接受吗?谢谢!
@CalvinCheng:我认为您误认为它只是 tar 存档中的 .vbox 图像。它确实是一个 tar 存档,但它包含 box-disk1.vmdk、box.ovf 和 Vagrantfile 等文件。我不知道它们是如何用来创建 VirtualBox 使用的文件的,但是如果你打开 VB 的 .vbox 文件,你会发现它只是 XML。我假设 Vagrant 将其文件(也是二进制和 XML 文件,加上 Vagrantfile)转换为 VirtualBox 使用的 XML 和二进制文件。然而,如果你打开二进制文件,你会发现它们是不同的,所以这不是解压缩和重命名的简单问题。
【参考方案1】:
在带有 Vagrant 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
。
【讨论】:
【参考方案2】:除了
Mac:
~/.vagrant.d/
Windows:
C:\Users\%userprofile%\.vagrant.d\boxes
您必须删除 VirtualBox/OtherVMprovider 中的文件才能重新开始。
【讨论】:
【参考方案3】:在Mac/Linux系统上,下载成功的盒子位于:
~/.vagrant.d/boxes
和不成功的盒子位于:
~/.vagrant.d/tmp
在 Windows 系统上,它位于用户文件夹下:
C:\Users\%userprofile%\.vagrant.d\boxes
希望这会有所帮助。谢谢
【讨论】:
不知道为什么这被否决了。有关不成功下载目的地的信息很有用。~/.vagrant.d/boxes
从不存储 .box 文件本身,只存储它的内容。 ~/.vagrant/tmp
用于在下载时临时存储 .box,但在 Vagrant 中安装时会被删除。
第三行(对于 Windows)应该是 %userprofile%\.vagrant.d\boxes
此答案适用于您真正关心硬盘空间的情况。【参考方案4】:
下载和安装完成后,实际的.box
文件会被 Vagrant 删除。如其他答案所述,在下载时,.box 文件存储为:
~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
其中文件名是“box”,后跟一个 40 字节的十六进制散列。例如,我系统上的一个临时文件是:
~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f
据我所知,此文件从未以*.box
扩展名保存,这解释了为什么上面的搜索未能找到它。有两种方法可以获取实际的 box 文件:
从 vagrantcloud.com 下载 .box 文件
-
在the atlas 上找到您感兴趣的盒子。例如,
https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
将域名替换为
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。
将/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
保存 .box 文件
根据需要使用 .box,例如,自己托管它并将 config.vm.box_url
指向 URL。 或
直接从 Vagrant 获取 .box
这需要你修改ruby源,以防止Vagrant在下载成功后删除框。
-
在 Vagrant 安装目录中找到 box_add.rb 文件。在我的系统上,它位于
/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
找到 box_add 函数。在box_add
函数中,有一个块读取:
将此块注释掉。 使用确保 # 确保我们在添加后删除临时文件, # 除非我们被打断,在这种情况下我们会保留它 # 这样我们就可以稍后继续下载。 如果 !@download_interrupted @logger.debug("正在删除临时框:#box_url") 开始 box_url.delete 如果 box_url 拯救 Errno::ENOENT # 没什么大不了的,临时文件可能实际上并不存在 结尾 结束
vagrant add box <boxname>
添加另一个框。
等待下载。
您可以观看它作为boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
文件保存在~/.vagrant.d/tmp/
目录中。
将文件重命名为更有用的名称。例如,mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box
。
你为什么要这个?
对我来说,这对于检索 .box 文件很有用,因此它可以托管在本地、快速的基础架构上,而不是从 HashiCorp's Atlas box catalog 或 another box provider 下载。
这确实应该是默认 Vagrant 功能的一部分,因为它有一个非常明确的用例。
【讨论】:
是否可以点赞、压缩或压缩 box 文件夹中的子文件夹以创建可安装的 box 文件? @ThorSummoner 是的,但你也可以让 Vagrant 在这种情况下处理它,例如,通过vagrant package
命令:docs.vagrantup.com/v2/cli/package.html。【参考方案5】:
在 Windows 上,可以在此处找到该位置。我没有在互联网上找到任何文档,这对我来说并不是很明显:
C:\Users\\username\\.vagrant.d\boxes
【讨论】:
那么 %userprofile%\.vagrant.d\boxes 有效吗? %userprofile% 扩展为 c:\users\username【参考方案6】:正如the docs 中提到的,盒子存储在:
Mac OS X 和 Linux:~/.vagrant.d/boxes
窗口:C:/Users/USERNAME/.vagrant.d/boxes
【讨论】:
啊。感谢您的澄清。我一定是瞎了眼,错过了文档中的解释。 @manojlds:请参阅我对问题的评论:.vbox 文件。它本身不是 VM,它只是一个 XML 文件。 Windows 操作系统上的相同位置? 您也可以使用环境变量 VAGRANT_HOME 来指定 .vagrant.d 的位置,如 VAGRANT_HOME=D:\.vagrant.d (是的,它也适用于 Windows)。 在 Windows 上的C:\Users\username\.vagrant.d\boxes
中,我只找到了 .vmdk
文件而不是 .box
!!【参考方案7】:
@Luke Peterson:有一种更简单的方法来获取 .box 文件。
只需转到https://atlas.hashicorp.com/boxes/search,搜索您要下载的盒子。注意盒子的 URL,例如:
https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
然后你可以使用这样的 URL 下载这个盒子:
https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
我尝试并成功下载了我需要的所有盒子。希望有所帮助。
【讨论】:
这是一个很棒的发现!谢谢你。 ;) 链接现已损坏 - 需要替换为:app.vagrantup.com。【参考方案8】:要更改路径,您可以为环境变量设置一个新路径,名为: VAGRANT_HOME
export VAGRANT_HOME=my/new/path/goes/here/
如果您想将这些 vagrant-Images 放在另一个 HDD 上,那可能会很好。
文档中的更多信息:http://docs.vagrantup.com/v2/other/environmental-variables.html
【讨论】:
以上是关于Vagrant 将其 .box 文件下载到哪里?的主要内容,如果未能解决你的问题,请参考以下文章