“vagrant up” 是如何工作的

“vagrant up” 是如何工作的

我到处都看到,vagrant box 只是 vagrant 构建的基础“模板”。而且,一旦你运行“vagrant up”,它实际上会创建一个 vagrant box 的副本,因此它应该一旦运行 vagrant up,就可以安全地删除 box 文件,并且仍然可以使用该虚拟机。

然而,这在实践中似乎不起作用。我有一个名为 ~/.vagrant.d/boxes/precise32 的基本框,我在文件中创建了一个带有该框名称的 vagrant 文件,并运行了 vagrant up。现在,当我将文件重命名为 ~/.vagrant.d/boxes/precise32.old 并尝试再次运行“vagrant up”时,我收到一个错误:

* The box 'precise32' could not be found.

因此,基础框似乎不是模板,而是需要保留的实时磁盘映像。那么为什么所有文档都说不是这样呢,例如http://docs-v1.vagrantup.com/v1/docs/getting-started/boxes.html

"Each project uses the box as a base only, so once the project VM is created, modifications can be made without affecting other projects which may use the same box."

答案1

一旦移除了一个盒子,就无法创建基于该盒子的新虚拟机,因为它已从文件系统中完全删除,但已启动的现有虚拟机将继续正常运行。

再次运行vagrant up将从框(模板)创建新机器。删除框将导致vagrant up失败。

up如果您的环境由于您在上一步中执行了而已经在运行,只需运行vagrant reload,它将快速重新启动您的虚拟机,跳过导入步骤。

你应该可以跑了vagrant reload

答案2

Vagrant 首次运行后会创建新的 VirtualBox 计算机

vagrant up

通过导入 Box 文件,该文件基本上是 VBox Machine 的打包版本。Vagrant 会将此存档提取到 Home 中 Vagrant 目录下的“boxes”文件夹中。

Vagrant 使用提取的信息来构建 VM Base,并将其与实际 VM 文件系统的附加层叠加,以形成可用的 VM。

您可以通过创建具有共享存储的虚拟机来复制此行为,其中第一个虚拟机充当基本“模板”。配置完成后创建一个快照,并设置其他虚拟机以使用此快照进行存储。使用此方案创建的每个新虚拟机都会继承基本系统和设置,但更改将作为初始快照的覆盖单独存储。

目前总结一下,您可以在导入后删除原始 Box 文件,但不能删除提取的信息,因为它们充当原始快照。

有关文件格式的更多信息,请参阅此处: http://docs.vagrantup.com/v2/boxes/format.html

有关创建盒子的信息,请参阅 VeeWee 项目。

相关内容