首页 > 解决方案 > vagrant remove,halt和destroy有什么区别

问题描述

所以当谈到流浪者时,我是一个初学者。在浏览与之相关的在线内容和文档时,我遇到了 3 个 vagrant 命令,即“destroy”、“remove”和“halt”。有人能弄清楚他们到底会做什么吗?

我知道: DESTROY:此命令停止正在运行的机器 Vagrant 正在管理并销毁在机器创建过程中创建的所有资源。运行此命令后,您的计算机应该保持干净状态,就好像您从未创建过来宾计算机一样。

HALT:此命令关闭 Vagrant 正在管理的正在运行的机器。

REMOVE:此命令从 Vagrant 中删除与给定名称匹配的框。那么这是否会从硬盘驱动器中移除盒子?

我无法想象这些命令的区别。我觉得停止就像关闭虚拟机一样。资源仍然分配给它。destroy 就像没有 VM 存在的状态。

remove 手段,甚至是去掉盒子。所以你必须重新下载它。那是对的吗 ?

标签: vagrant

解决方案


(凯文回答正确,+1!我只是为流浪初学者提供更多信息)

首先,您需要了解 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) 来运行虚拟机时,它会做的是:

  1. 从互联网上下载盒子bento/ubuntu-16.04(这实际上已经是一个 VM,它将成为进一步 VM 的基础映像)一旦下载了盒子,它就会保留在您的$HOME/.vagrant.d/boxes文件夹中,并且可以用于任何其他 Vagrantfile
  2. vagrant 将克隆盒子并在 VirtualBox 中创建一个虚拟机。您可以打开 Virtualbox 并在可用 VM 列表中查看该 VM。VM 文件将存储在 VirtualBox 文件夹中。

您可以下载任意数量的盒子并将它们存储在您的.vagrant.d文件夹中,您可以看到正在运行的可用盒子列表

$ vagrant box list

您可以通过运行查看当前管理的 vagrant 虚拟机

$ vagrant global-status

现在回答您的问题,该命令将对不同级别产生影响:

  • vagrant halt 您理解正确 - 您可以查看我之前的答案以进一步阅读In Vagrant 哪个更好地停止和暂停?

  • vagrant destroy 此命令会销毁所有VM 资源(但不是任何 vagrant 资源),因此所有 VirtualBox VM 文件都将被销毁,但该框保持不变。vagrant box list您可以在 VM 上运行后通过运行来检查vagrant destroy,所有框都保持不变。

  • vagrant remove 此命令删除(销毁)vagrant 资源,因此如果您想稍后针对基本框创建新 VM,vagrant 需要从 Internet 重新下载。请注意,创建 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)
    

推荐阅读