(Kevin回答得很对,+1!我为vagrant初学者提供一些更多的信息)
首先,你需要了解vagrant是如何工作的。
当你创建一个vagrant环境时,你会创建一个vagrant文件(你可以使用命令vagrant init bento/ubuntu-16.04
)-- Vagrantfile
看起来像这样(最小化)
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-16.04"
end
当您启动vagrant(
vagrant up
)来运行虚拟机时,它会执行以下操作:
- 从互联网上下载盒子
bento/ubuntu-16.04
(实际上这已经是一个虚拟机,将作为后续虚拟机的基础映像),一旦盒子下载完成,它将保留在$HOME/.vagrant.d/boxes
文件夹中,并可用于任何其他Vagrantfile
- vagrant将克隆该盒子并在VirtualBox中创建一个虚拟机。 您可以打开Virtualbox查看可用虚拟机列表。虚拟机文件将存储在VirtualBox文件夹中。
您可以下载任意数量的盒子并将其存储在.vagrant.d
文件夹中,并且您可以查看正在运行的可用盒子列表。
返回结果:当您启动vagrant(
vagrant up
)来运行虚拟机时,它会执行以上操作。
$ vagrant box list
您可以通过运行以下命令查看vagrant当前管理的虚拟机
$ vagrant global-status
现在来回答你的问题,这个命令会对不同层面产生影响:
vagrant halt
你理解得没错——如果想了解更多,请查看我之前的回答:在Vagrant中,halt和suspend哪个更好?
vagrant destroy
这个命令会销毁所有VM资源(但不会影响任何vagrant资源),因此所有VirtualBox VM文件都将被销毁,但框架本身不会受到影响。
你可以在运行vagrant destroy
后运行vagrant box list
以检查所有框架是否仍然存在。
vagrant remove
这个命令会删除(销毁)vagrant资源,因此如果您想稍后针对基础框创建新的VM,则需要重新从互联网下载。
请注意,在创建了VM之后,您可以删除框,vagrant仍将正常工作,因此vagrant remove
不会影响VirtualBox资源,所有VM都将保持原样。
关于框使用的说明:
$ vagrant box list
bento/ubuntu-16.04 (vmware_desktop, 2.3.0)
bento/ubuntu-16.04 (vmware_desktop, 2.3.7)
您可以为不同的提供商使用相同版本的盒子
$ vagrant box list
bento/ubuntu-16.04 (virtualbox, 201708.22.0)
bento/ubuntu-16.04 (vmware_desktop, 2.3.0)
bento/ubuntu-16.04 (vmware_desktop, 2.3.7)