vagrant box add和vagrant init有什么区别?

10
我正在阅读 Vagrant文档中的boxes,但不理解以下两者之间的区别:
  • vagrant box add hashicorp/precise32;与
  • vagrant init hashicorp/precise32
后者从远程目录获取hashicorp/precise32盒子,然后创建一个Vagrantfile以启动该盒子的实例。但我不知道这与box add方法有何不同。
因此,我想问:这两个命令有什么区别?在什么情况下使用每个命令最合适?
2个回答

7

vagrant box add只是添加一个虚拟机镜像,并不会创建Vagrantfile文件,就这样。

我一直使用vagrant init boxname boxurl命令,但是有时候你可能不想创建Vagrantfile文件。比如说你想循环添加一些镜像。


1
感谢 @hek2mgl (+1) - 但是当你说“**vagrant box add只会添加盒子...”时,我仍然不理解!将盒子添加到...什么?换句话说,在运行 vagrant box add之前和之后,你的本地文件系统/机器有什么不同?再次感谢! - smeeb
3
"vagrant box" 中的 "box" 指的是“基础镜像”。你只需要一个特定操作系统镜像的“基础镜像”,但可以创建多个实例,而无需再次下载基础镜像。使用 "vagrant init" 命令创建一个实例(再加上 "vagrant up" 命令)。 - hek2mgl
啊~好的,谢谢 @hek2mgl(再加一分) - 请您确认一下:这两个命令都会在你的(在Virtual Box中)~/VirtualBox VMs/目录下添加“boxes”,但是vagrant init实际上会为你创建一个Vagrantfile,如果这是正确的,那么我明白您的意思了:为什么还要使用box add?你为什么想要一个盒子但却不需要一个对应的Vagrantfile呢?再次感谢您! - smeeb
假设,拥有它也不会有什么损失。不用谢。 - hek2mgl
真的很晚才加入:我想在已部署的系统上预填充我要使用的基本类型的vagrant实例。我打算同时运行许多相同类型的vagrant实例。我执行vagrant box将其填充到我的系统中,并提前下载,而不是在第一次调用vagrant init时下载。 - mtalexan
@smeeb 我认为 VagrantFile 包含了一些配置,比如需要映射的文件夹、网站虚拟主机以及它们应该指向的位置。可以将 VagrantFile 添加到 git 仓库中,以便在开发人员之间共享公共环境。 - Jakhongir

1
vagrant box add hashicorp/precise32 

只需将盒子镜像下载到您的vagrant应用程序中

vagrant init hashicorp/precise32

在当前目录创建一个Vagrant文件。 如果Vagrant镜像尚未被下载,则尝试下载Vagrant镜像。
在已添加Vagrant镜像的情况下,我们想初始化一个Vagrant文件。 在Shell中,我们可以使用Tab键获取自动完成的名称,因为它已经知道Vagrant镜像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接