Действительно удалить все следы машины Vagrant

Как мне удалить все следы ящика Vagrant, не заходя в файловую систему вручную?

Я создаю пользовательскую коробку с использованием Packer, собираю и уничтожаю множество тестовых случаев. Закончив с тестовым набором, я запускаю

vagrant destroy

vagrant help описывает эту команду как

останавливает и удаляет все следы бродячей машины

Кажется, все хорошо с миром. Однако, когда я создаю новую коробку, после новой установки я замечаю, что в моем сообщении дня говорится, что виртуальная машина была создана несколько дней назад. Оказывается, ящики (также) хранятся в .vagrant.d\boxes, Vagrant использует эти ящики вместо ящиков, созданных Packer, или в дополнение к ним, которые находятся в совершенно другом месте.

Бродячая документация для vagrant destroy рекомендует использовать vagrant box remove,

Теперь есть еще коробка в .vagrant.d\boxes каталог. С помощью vagrant box remove требует "имя".

Если я бегу vagrant box list это говорит

Там нет установленных коробок! использование vagrant box add добавить немного.

Видимо, Вагрант не знает об этой другой коробке. Все же, если я бегу vagrant global-status Я получаю вывод как

id       name    provider   state    directory
-------------------------------------------------------------------------
47d1c7c  default virtualbox poweroff C:/some/path

Итак, Вагрант видит какую-то коробку. Пытаясь использовать 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.

Конечно, я могу просто удалить коробки вручную .vagrant.d\boxes,

Похоже, мое понимание того, что Вагрант подразумевает под "коробкой", "уничтожить", "удалить" и, ну, почти все термины, используемые здесь, неверно. Я не могу понять все это. Есть каталог Vagrant VM, который содержит один блок, но есть блок, который создает Packer, и еще один блок в .vagrant.d\boxes, к destroy коробка удаляет некоторые следы, но не все. list Команда видит некоторые окна, но не другие. Все это выглядит очень противоречивым.

Я создаю гостей CentOS 7 на хосте Windows 7, если это имеет значение.

3 ответа

Vagrant создает внутреннюю виртуальную машину, связанную с загруженным ящиком.

Чтобы удалить все данные из виртуальной машины и ящика, я рекомендую удалить ящик, а также уничтожить виртуальную машину.

Чтобы просмотреть ящики, выполните команду:

      vagrant box list

Чтобы удалить ящик, выполните команду:

      vagrant box remove box/name

Уничтожить виртуальную машину

      vagrant destroy vm-name

Вы удалили все данные.

@Loren Ipsum Я сделал резервную копию всего своего каталога с помощью VagrantFile, поэтому удалил весь каталог. Делаю#vagrant global-status --pruneудалить все из этого списка. Удалить.vagrant.d\boxes

      C:\tools\Cmder
λ vagrant global-status --prune
id       name   provider state  directory
--------------------------------------------------------------------
There are no active Vagrant environments on this computer! Or,
you haven't destroyed and recreated Vagrant environments that were
started with an older version of Vagrant.

C:\tools\Cmder
λ vagrant box list
centos/7                (hyperv, 1905.1)
debian/buster64         (virtualbox, 10.0.0)
debian/contrib-buster64 (virtualbox, 10.1.0)
debian/jessie64         (virtualbox, 8.11.1)
ubuntu/trusty64         (virtualbox, 20190514.0.0)
ubuntu/xenial64         (virtualbox, 20200204.0.0)

Некоторые ящики по-прежнему отображаются в списке бродячих ящиков, даже при выполнении сценария ниже:

Список бродячих ящиков

      C:\Users\Marlon\OneDrive (master -> origin)
λ vagrant box list | cut -f 1 -d ' ' | xargs -L 1 vagrant box remove -f
You requested to remove the box 'centos/7'. This box has
multiple providers. You must explicitly select a single
provider to remove with `--provider`.

Available providers: hyperv, virtualbox
You requested to remove the box 'centos/7'. This box has
multiple providers. You must explicitly select a single
provider to remove with `--provider`.

Available providers: hyperv, virtualbox
Removing box 'debian/buster64' (v10.0.0) with provider 'virtualbox'...
Removing box 'debian/contrib-buster64' (v10.1.0) with provider 'virtualbox'...
Removing box 'debian/jessie64' (v8.11.1) with provider 'virtualbox'...
Removing box 'ubuntu/trusty64' (v20190514.0.0) with provider 'virtualbox'...
Removing box 'ubuntu/xenial64' (v20200204.0.0) with provider 'virtualbox'...

C:\Users\Marlon\OneDrive (master -> origin)
λ vagrant box list
centos/7 (hyperv, 1905.1)
centos/7 (virtualbox, 1905.1)

Честно говоря, я не знаю, почему некоторые поля все еще отображаются выше (тот же поставщик). Я сделал вручную:

      C:\Users\Marlon\OneDrive (master -> origin)
λ vagrant box remove centos/7 --provider=virtualbox --force
Removing box 'centos/7' (v1905.1) with provider 'virtualbox'...

C:\Users\Marlon\OneDrive (master -> origin)
λ vagrant box remove centos/7 --provider=hyperv --force
Removing box 'centos/7' (v1905.1) with provider 'hyperv'...

C:\Users\Marlon\OneDrive (master -> origin)
λ vagrant box list
There are no installed boxes! Use `vagrant box add` to add some.

Я удалил таким образом все ящики, попробовал несколько команд без использования файловой системы, но, к сожалению, похоже, это так...

Что касается меня, в Windows 10 я просто удалил изображение в Virtual Box после удаления основных элементов, упомянутых выше. Это было около 6 ГБ.

Другие вопросы по тегам