box 是 Vagrant 环境中使用的包格式。box 可以在 Vagrant 支持的所有平台上被任何人使用,从而提供相同的工作环境。
vagrant box 工具提供了管理 box 的所有功能。更多信息参考 vagrant box 命令。
使用 box 的最简单的方式是从 公共 box 目录 添加 box。你也可以在这个网站添加并分享你定制的 box。
box 支持版本控制,你的使用 Vagrant 的团队成员可以轻松的更新底层的 box,创建 box 的人可以发布修复 BUG 的版本。
1. 寻找 box
寻找 box 的最简单的方式是从 公共 box 目录 寻找满足你的使用场景的 box。该目录包含了大多数主要的操作系统作为基础,以及专门的工具箱,可以帮助你快速启动 LAMP 堆栈,Ruby,Python 等。
公共目录中的 box 与可以用于不同的 provider。无论是使用基于 VirtualBox,VMware 还是 AWS 等 Vagrant,都应该能够找到需要的 box。
从这个目录中很容易添加 box。每个 box 都显示了添加的命令,格式相同:
$ vagrant box add USER/BOX
例如:
vagrant box add hashicorp/precise64
也可以使用 vagrant init hashicorp/precise64
快速初始化 Vagrant 环境。
命名空间不保证规范 box!一个常见的误解是像“ubuntu”这样的命名空间代表了 Ubuntu 这个 box 的规范空间。这是不真实的。Vagrant Cloud上的命名空间的行为与 GitHub 上的命名空间非常相似。正如 GitHub 的支持团队无法协助解决某人存储库中的问题一样,HashiCorp 的支持团队无法管理第三方发布的 box。
2. 官方 box
Vagrant 的创造者 HashiCorp 发布了基础的 Ubuntu 12.04 (32 及 64 位) box 用于最基本的使用场景。这个 box 经过了高度优化、精简尺寸并且同时指出 VirtualBox 和 VMWare。命令行用法如下:
$ vagrant init hashicorp/precise64
也可以通过 Vagrantfile 文件使用:
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
end
对于其他用户,建议使用 Bento box,Bento box 开源且支持包括 VMWare、VirtualBox 及 Parallels 等多个 provider。有多个操作系统和不同版本可用。
这就是建议使用的官方的两个 box。
Canonical(制作 Ubuntu 操作系统的公司)在 Vagrant Cloud 的“ubuntu”命名空间下发布了一些 box。这些 box 仅支持 Virtualbox,并不能为大多数用户提供理想的体验。如果遇到这些 box 的问题,请尝试使用 Bento box。