Обновление:. Я удалил как Vagrant, так и Docker, и буду принимать любой ответ, который поможет мне переустановить оба из них таким образом, чтобы:
- Я могу запустить Vagrant без какой-либо зависимости от Docker; и
- Я могу запускать Docker без какой-либо зависимости от Vagrant; и
- Я могу запустить Vagrant и использовать Docker в качестве поставщика поддержки
Если вы посмотрите на исходный код Vagrant, вы увидите, что моя ошибка исходит из этой строки кода, которая для поставщиков VirtualBox, происходит от этого метода usable
, создающего ошибку. Этот метод usable
вызывает ошибку, если он считает, что VirtualBox имеет недопустимую версию (VirtualBoxInvalidVersion
) или если ее не обнаружено в локальной системе (VirtualBoxNotDetected
).
Не будучи разработчиком Ruby, мне сейчас становится трудно понять, как Vagrant решает выбросить одну из этих двух ошибок. Но я думаю, что я приближаюсь к выяснению, почему Docker запускает мою конфигурацию Vagrant/VirtualBox.
Оригинальный вопрос:
Mac здесь. Несколько дней назад я установил Vagrant и VirtualBox следующим образом:
brew cask install virtualbox
brew cask install vagrant
brew cask install vagrant-manager
..., который достал его и без проблем справился. Мне удалось vagrant init hashicorp/precise32; vagrant up
, и все выглядело так, как будто оно работает отлично (hashicorp/precise32
по умолчанию использует VirtualBox).
Затем прошлой ночью я установил Docker, который также требует VirtualBox, и он запускается и работает без каких-либо проблем. Я даже смог получить примеры контейнеров whalesay
. Пока все хорошо.
Сегодня я пошел играть в Vagrant, и похоже, что моя установка Docker закрыла мою конфигурацию Vagrant/VirtualBox.
Теперь, когда я запускаю vagrant init hashicorp/precise32
в пустом каталоге, а затем запускаю vagrant up
, я получаю:
[email protected]:~/sandbox/myapp$vagrant up
No usable default provider could be found for your system.
Vagrant relies on interactions with 3rd party systems, known as
"providers", to provide Vagrant with resources to run development
environments. Examples are VirtualBox, VMware, Hyper-V.
The easiest solution to this message is to install VirtualBox, which
is available for free on all major platforms.
If you believe you already have a provider available, make sure it
is properly installed and configured. You can see more details about
why a particular provider isn't working by forcing usage with
`vagrant up --provider=PROVIDER`, which should give you a more specific
error message for that particular provider.
Итак, я попробовал указать тип провайдера, хотя мне и не нужно, чтобы посмотреть, что произойдет:
[email protected]:~/sandbox/myapp$vagrant up --provider=VirtualBox
The provider 'VirtualBox' could not be found, but was requested to
back the machine 'cortex'. Please use a provider that exists.
И только для хорошей оценки, запуск vagrant -v
выводит Vagrant 1.7.2
в качестве вывода.
Любые идеи, что пошло наперекосяк и какое исправление?