Lor*_*sum 7 virtualbox virtual-machine packer vagrant
如何删除 Vagrant box 的所有痕迹,而无需手动进入文件系统?
我正在使用 Packer 创建一个自定义框,构建和销毁大量测试用例。完成测试用例后,我运行
vagrant destroy
Run Code Online (Sandbox Code Playgroud)
vagrant help该命令描述为
停止并删除vagrant机器的所有痕迹
世界上一切似乎都很好。然而,当我在全新安装后创建一个新盒子时,我注意到当天的消息说虚拟机是几天前创建的。事实证明,盒子(也)存储在.vagrant.d\boxes. Vagrant 正在使用这些盒子,而不是 Packer 创建的盒子,或者除了 Packer 创建的盒子之外,后者位于完全不同的位置。
vagrant 文档vagrant destroy建议使用vagrant box remove.
现在,目录中仍然有一个框.vagrant.d\boxes。使用vagrant box remove需要一个“名称”。
如果我跑步vagrant box list,它会说
没有安装盒子!用来
vagrant box add添加一些。
显然 Vagrant 不知道另一个盒子。然而,如果我运行vagrant global-status,我会得到类似的输出
id name provider state directory
-------------------------------------------------------------------------
47d1c7c default virtualbox poweroff C:/some/path
Run Code Online (Sandbox Code Playgroud)
所以,Vagrant可以看到一些盒子。尝试使用vagrant box remove,“name”或“id”引用都不起作用:
C:\some\path>vagrant box remove default
The box you requested to be removed could not be found. No
boxes named 'default' could be found.
C:\some\path>vagrant box remove 47d1c7c
The box you requested to be removed could not be found. No
boxes named '47d1c7c' could be found.
Run Code Online (Sandbox Code Playgroud)
当然,我可以直接手动删除这些框.vagrant.d\boxes。
看来我对 Vagrant 的“盒子”、“销毁”、“删除”以及几乎所有这里涉及的术语的理解都是不正确的。我无法理解这一切。有一个 Vagrant VM 目录,其中包含一个框,但还有 Packer 创建的框,并且.vagrant.d\boxes. 到destroy一个盒子会消除一些痕迹,但不是全部。该list命令看到一些框,但看不到其他框。这一切都显得非常不一致。
我正在 Windows 7 主机上创建 CentOS 7 来宾(如果这很重要的话)。
@Loren Ipsum 我用 VagrantFile 备份了整个目录,所以我删除了整个目录。#vagrant global-status --prune从此列表中删除所有内容。删除.vagrant.d\\boxes
C:\\tools\\Cmder\n\xce\xbb vagrant global-status --prune\nid name provider state directory\n--------------------------------------------------------------------\nThere are no active Vagrant environments on this computer! Or,\nyou haven\'t destroyed and recreated Vagrant environments that were\nstarted with an older version of Vagrant.\n\nC:\\tools\\Cmder\n\xce\xbb vagrant box list\ncentos/7 (hyperv, 1905.1)\ndebian/buster64 (virtualbox, 10.0.0)\ndebian/contrib-buster64 (virtualbox, 10.1.0)\ndebian/jessie64 (virtualbox, 8.11.1)\nubuntu/trusty64 (virtualbox, 20190514.0.0)\nubuntu/xenial64 (virtualbox, 20200204.0.0)\nRun Code Online (Sandbox Code Playgroud)\n\n即使执行以下脚本,某些框仍然显示在流浪框列表中:
\n\n\n\nC:\\Users\\Marlon\\OneDrive (master -> origin)\n\xce\xbb vagrant box list | cut -f 1 -d \' \' | xargs -L 1 vagrant box remove -f\nYou requested to remove the box \'centos/7\'. This box has\nmultiple providers. You must explicitly select a single\nprovider to remove with `--provider`.\n\nAvailable providers: hyperv, virtualbox\nYou requested to remove the box \'centos/7\'. This box has\nmultiple providers. You must explicitly select a single\nprovider to remove with `--provider`.\n\nAvailable providers: hyperv, virtualbox\nRemoving box \'debian/buster64\' (v10.0.0) with provider \'virtualbox\'...\nRemoving box \'debian/contrib-buster64\' (v10.1.0) with provider \'virtualbox\'...\nRemoving box \'debian/jessie64\' (v8.11.1) with provider \'virtualbox\'...\nRemoving box \'ubuntu/trusty64\' (v20190514.0.0) with provider \'virtualbox\'...\nRemoving box \'ubuntu/xenial64\' (v20200204.0.0) with provider \'virtualbox\'...\n\nC:\\Users\\Marlon\\OneDrive (master -> origin)\n\xce\xbb vagrant box list\ncentos/7 (hyperv, 1905.1)\ncentos/7 (virtualbox, 1905.1)\nRun Code Online (Sandbox Code Playgroud)\n\n老实说,我不知道为什么上面仍然显示一些框(同一提供商)。我手动做了:
\n\nC:\\Users\\Marlon\\OneDrive (master -> origin)\n\xce\xbb vagrant box remove centos/7 --provider=virtualbox --force\nRemoving box \'centos/7\' (v1905.1) with provider \'virtualbox\'...\n\nC:\\Users\\Marlon\\OneDrive (master -> origin)\n\xce\xbb vagrant box remove centos/7 --provider=hyperv --force\nRemoving box \'centos/7\' (v1905.1) with provider \'hyperv\'...\n\nC:\\Users\\Marlon\\OneDrive (master -> origin)\n\xce\xbb vagrant box list\nThere are no installed boxes! Use `vagrant box add` to add some.\nRun Code Online (Sandbox Code Playgroud)\n\n我以这种方式删除了所有框,在不使用文件系统的情况下尝试了几个命令,但不幸的是,这似乎就是这样......
\n| 归档时间: |
|
| 查看次数: |
16517 次 |
| 最近记录: |