2015-08-19 17 views
10

: Ho disinstallato sia Vagrant e Docker, e accetteranno una risposta che mi aiuta a re-installare entrambi in modo tale che:Vagrant e Docker non giocare bel aggiornamento

  1. posso correre Vagrant senza alcuna dipendenza da Docker qualunque; e
  2. Posso eseguire Docker senza alcuna dipendenza da Vagrant qualunque; e
  3. posso correre Vagrant e utilizzare Docker come provider supporto

Se si guarda il codice sorgente Vagrant, vedrai che il mio errore viene da this line of code, che, per i fornitori di VirtualBox, viene da this usable method innalzando un errore Il metodo usable genera un errore se ritiene che VirtualBox abbia una versione non valida (VirtualBoxInvalidVersion) o se non sia stata rilevata sul sistema locale (VirtualBoxNotDetected).

Non essendo uno sviluppatore Ruby, ora sta diventando difficile per me capire come Vagrant sta decidendo di lanciare uno di questi due errori. Ma penso che mi sto avvicinando a capire perché Docker stia cercando la mia configurazione di Vagrant/VirtualBox.


domanda originale:

Mac qui. Pochi giorni fa ho installato Vagrant e VirtualBox in questo modo:

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

... che ha ottenuto è Vagrant installato e funzionante senza problemi di sorta. Sono stato in grado di vagrant init hashicorp/precise32; vagrant up e tutto sembrava funzionare perfettamente (hashicorp/precise32 utilizza VirtualBox per impostazione predefinita).

Poi ieri sera ho installato Docker, che richiede anche VirtualBox, e l'ho installato e funzionante senza alcun problema. Sono persino riuscito a far funzionare gli esempi di contenitore whalesay. Fin qui tutto bene.

Oggi sono andato a giocare a Vagrant, e sembra che il mio Docker abbia installato la mia configurazione di Vagrant/VirtualBox.

Ora, quando eseguo vagrant init hashicorp/precise32 su una directory vuota, e quindi eseguire vagrant up, ottengo:

[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. 

Allora ho provato a specificare il tipo di provider, anche se io non avrei dovuto, solo per vedere cosa succede:

[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. 

E per buona misura, in esecuzione vagrant -v produce Vagrant 1.7.2 come output.

Qualche idea su cosa è andato storto e quale è la correzione?

+0

Ho riscontrato un problema simile dopo l'installazione di strumenti docker, e corrego dopo aver eseguito questo comando 'rm -r ~/.vagrant.d/plugins.json ~/.vagrant.d/gems' – BMW

+0

Grazie a @BMW ma questo non lavora per me. – smeeb

+0

Ubuntu 12.04 non è consigliato per giocare con la finestra mobile, perché la finestra mobile richiede il kernel 3.13+ di Linux. Sebbene tu possa eseguire '' sudo apt-get update && sudo apt-get install linux-image-generic-lts-trusty'' per aggiornare il kernel in esso, ti consiglio comunque di usare Ubuntu 14.04. – kxxoling

risposta

0

Ho funzionato, ma non ho idea di quale fosse la soluzione reale.

  1. Disinstallare sia Vagrant e Docker
  2. Reinstallare Vagrant manualmente (non tramite brew/cask)
  3. Reinstallare Docker da this link
  4. Usa this Vagrantfile to confirm che la Vagrant-Docker-VirtualBox lavorando tutti insieme piacevolmente
0

Non è stato possibile riprodurre il problema. Tuttavia, ho letto un po 'del codice sorgente dal provider VirtualBox di Vagrant. Sembra che probabilmente non sia stato possibile trovare VBoxManage in $PATH. Dovrebbe trovarsi a /usr/bin/VBoxManage, anche se installato tramite Homebrew. È probabile che la tua variabile $ PATH non sia corretta, o VBoxManage è da qualche altra parte.

Altri lettori che hanno lo stesso problema dovrebbe:

  • Controllare /etc/paths per garantire che /usr/bin è elencato, insieme a tutte le altre directory in genere si trovano in $ PATH.
  • Cercare un file denominato ~/.bashrc o ~/.bash_profile. Mac OS X non viene fornito con uno di questi file per impostazione predefinita, ma alcuni utenti li aggiungono per personalizzare bash e alcuni programmi potrebbero tentare di modificarli/crearli automaticamente. Fai attenzione alle linee che assomigliano a export PATH=.... Su OS X, le modifiche a $ PATH devono essere apportate in /etc/paths e /etc/paths.d/*, non in uno script di bash.
  • Eseguire type -a VBoxManage per visualizzare tutte le posizioni note di eseguibili denominate VBoxManage. Potrebbe esserci un binario vagante da qualche parte che sta avendo la precedenza sul vero binario.
1

Avevo lo stesso problema e l'ho risolto aggiornando Vagrant all'ultima versione (con 1.7.2, aggiornato alla 1.8.1).

+1

Questo - al momento, 1.7.2 è bologna, è tutto ciò che 1.8.1 al giorno d'oggi. – James

2

Vagrant si preoccupa per caso (almeno Vagrant 1.8.1 lo fa), in modo da utilizzare lettere minuscole per il nome del fornitore:

vagrant up --provider=virtualbox 

Penso che il messaggio di errore 1.8.1 è molto più utile:

$ 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 

Potresti anche essere in grado di impostare un provider predefinito nel tuo Vagrantfile.