2015-08-19 2 views
10

Update: Я удалил как бродяга и Докер, и будет принимать любой ответ, который помогает мне заново установить оба из них таким образом, чтобы:Vagrant и Docker не играет хороший

  1. Я могу запустить Бродяга без какой-либо зависимости от Докера; и
  2. Я могу запустить Docker без какой-либо зависимости от Vagrant; и
  3. я могу запустить Vagrant и использовать Docker в качестве поставщика основы

Если вы посмотрите на исходный код Vagrant, вы увидите, что моя ошибка исходит от this line of code, что, для поставщиков VirtualBox, происходит от this usable method подняв ошибку. Этот метод usable вызывает ошибку, если он считает, что VirtualBox имеет недопустимую версию (VirtualBoxInvalidVersion) или если ее не обнаружено в локальной системе (VirtualBoxNotDetected).

Не будучи рубиновым разработчиком, мне становится трудно понять, как Вагрант решает выбросить одну из этих двух ошибок. Но я думаю, что я приближаюсь к выяснению, почему Docker запускает мою конфигурацию Vagrant/VirtualBox.


Оригинальный вопрос:

Mac здесь. Несколько дней назад я установил Vagrant и VirtualBox, как так:

brew cask install virtualbox 
brew cask install vagrant 
brew cask install vagrant-manager 

... который получил его Vagrant и не работает никаких проблем вообще. Мне удалось 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 в качестве выходного сигнала.

Любые идеи, что пошло наперекосяк и какое исправление?

+0

У меня возникла аналогичная проблема после установки панели инструментов docker и исправлена ​​после запуска этой команды 'rm -r ~/.vagrant.d/plugins.json ~/.vagrant.d/gems' – BMW

+0

Спасибо @BMW, но это не так работа для меня. – smeeb

+0

Ubuntu 12.04 не предлагается играть с докером, потому что для докера требуется ядро ​​Linux 3.13+. Хотя вы можете запустить '' sudo apt-get update && sudo apt-get install linux-image-generic-lts-trusty'' для обновления ядра в нем, я все же предлагаю вам вместо этого использовать Ubuntu 14.04. – kxxoling

ответ

0

Я получил эту работу, но понятия не имею, что такое фактическое решение.

  1. Uninstall как бродяга и Docker
  2. Переустановка Vagrant вручную (не через brew/cask)
  3. Переустановка Докер из this link
  4. Используйте this Vagrantfile to confirm, что ваш Vagrant-Docker-VirtualBox все работают вместе красиво
0

Мне не удалось воспроизвести проблему. Тем не менее, я немного прочитал исходный код от Vagrant's VirtualBox. Похоже, он, вероятно, не нашел VBoxManage в $PATH. Он должен быть расположен по адресу /usr/bin/VBoxManage, даже если он установлен через Homebrew. Скорее всего, ваша переменная $ PATH была неправильной, или VBoxManage был где-то в другом месте.

Другие читатели, которые имеют ту же проблему, необходимо:

  • Check /etc/paths для того, чтобы /usr/bin перечислен, наряду со всеми другими каталогами обычно находятся в $ PATH.
  • Ищите файл с именем ~/.bashrc или ~/.bash_profile. Mac OS X по умолчанию не поставляется ни с одним из этих файлов, но некоторые пользователи добавляют их для настройки bash, а некоторые программы могут пытаться автоматически редактировать/создавать их. Будьте осторожны с любыми строками, которые выглядят как export PATH=.... В OS X изменения в $ PATH должны быть сделаны в /etc/paths и /etc/paths.d/*, а не в сценарии bash.
  • Запустите type -a VBoxManage, чтобы увидеть все известные местоположения исполняемых файлов с именем VBoxManage. Там может быть бродячий двоичный файл, который имеет приоритет над реальным двоичным кодом.
1

У меня была такая же проблема, и я исправил ее, обновив Vagrant до последней версии (был 1.7.2, обновлен до 1.8.1).

+1

Это - на данный момент, 1.7.2 - это болонья, сейчас все об этом 1.8.1. – James

2

Бродяга заботится о деле (по крайней мере Vagrant 1.8.1 делает), поэтому использовать нижний регистр для имени поставщика:

vagrant up --provider=virtualbox 

Я думаю, что сообщение 1.8.1 ошибки гораздо более полезное:

$ vagrant up --provider=VirtualBox # NOTE: this is the WRONG capitalization 
An active machine was found with a different provider. Vagrant 
currently allows each machine to be brought up with only a single 
provider at a time. A future version will remove this limitation. 
Until then, please destroy the existing machine to up with a new 
provider. 

Machine name: default 
Active provider: virtualbox 
Requested provider: VirtualBox 

Вы также можете установить поставщик по умолчанию в своем Vagrantfile.

Смежные вопросы