Действительно удалить все следы машины 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 ГБ.