2015-08-19 5 views
10

अद्यतन: मैं दोनों Vagrant और डोकर अनइंस्टॉल कर दिया है, और किसी भी सवाल का जवाब मुझे उन दोनों को इस तरह से कि में फिर से स्थापित करने में मदद करता है कि स्वीकार करेंगे:Vagrant और डोकर नहीं खेल अच्छा

  1. मैं चला सकते हैं डॉकर पर किसी भी निर्भरता के बिना Vagrant; और
  2. मैं डॉकर को किसी भी निर्भरता पर बिना किसी निर्भरता के चला सकता हूं; और
  3. मैं Vagrant चलाने के लिए और समर्थन प्रदाता के रूप में डोकर का उपयोग

आप Vagrant स्रोत कोड को देखो, तो आप देखेंगे कि मेरी त्रुटि this line of code से आता है, जो, VirtualBox के प्रदाताओं के लिए, this usable method से आता है सकते हैं एक त्रुटि उठा रहा है। यह usable विधि एक त्रुटि उत्पन्न करती है अगर ऐसा लगता है कि वर्चुअलबॉक्स में एक अवैध संस्करण (VirtualBoxInvalidVersion) है या यदि स्थानीय सिस्टम (VirtualBoxNotDetected) पर इसका पता नहीं चला है।

रुबी देव नहीं होने के कारण, अब यह पता लगाना मुश्किल हो रहा है कि कैसे वाग्रेंट उन दो त्रुटियों में से किसी एक को फेंकने का निर्णय ले रहा है। लेकिन मुझे लगता है कि मैं यह पता लगाने के करीब आ रहा हूं कि डॉकर मेरे वग्रेंट/वर्चुअलबॉक्स कॉन्फ़िगरेशन को क्यों खो रहा है।


मूल प्रश्न:

यहाँ मैक। कुछ दिन पहले मैं Vagrant स्थापित और VirtualBox तो जैसे:

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

... जो इसे Vagrant उठकर कोई समस्या नहीं जो भी चल रहा है। मैं vagrant init hashicorp/precise32; vagrant up करने में सक्षम था और सबकुछ ऐसा लगता था कि यह सही चल रहा था (hashicorp/precise32 डिफ़ॉल्ट रूप से वर्चुअलबॉक्स का उपयोग करता है)।

फिर कल रात मैंने Docker स्थापित किया, जिसके लिए वर्चुअलबॉक्स की भी आवश्यकता है, और इसे किसी भी समस्या के साथ चलाने और चलाने के लिए चला गया। मैं whalesay कंटेनर उदाहरण काम करने में भी सक्षम था। अब तक सब ठीक है।

आज मैं वाग्रेंट में चारों ओर खेलने के लिए गया, और ऐसा लगता है कि मेरे डॉकर इंस्टॉल ने मेरे वाग्रेंट/वर्चुअलबॉक्स कॉन्फ़िगरेशन को रोक दिया।

अब, जब मैं एक खाली निर्देशिका पर 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

मुझे इंस्टॉल डॉकर टूलबॉक्स के बाद एक ही समस्या मिली है, और इस आदेश को चलाने के बाद ठीक करें 'rm -r ~/.vagrant.d/plugins.json ~/.vagrant.d/gems' – BMW

+0

धन्यवाद @ बीएमडब्ल्यू लेकिन यह नहीं था मेरे लिए काम। – smeeb

+0

उबंटू 12.04 को डॉकर के साथ खेलने का सुझाव नहीं दिया गया है, क्योंकि डॉकर को लिनक्स कर्नेल 3.13+ की आवश्यकता होती है। यद्यपि आप कर्नेल को अपग्रेड करने के लिए 'sudo apt-get update && sudo apt-get linux-image-generic-lts-trusty 'इंस्टॉल कर सकते हैं, फिर भी मैं आपको उबंटू 14.04 का उपयोग करने का सुझाव देता हूं। – kxxoling

उत्तर

0

मुझे यह काम मिल गया, लेकिन मुझे पता नहीं था कि वास्तविक समाधान क्या था।

  1. स्थापना रद्द दोनों Vagrant और डोकर
  2. पुनर्स्थापित Vagrant मैन्युअल उपयोग this Vagrantfile to confirm से this link
  3. पुनर्स्थापित डोकर (brew/cask के माध्यम से नहीं) है कि आपके Vagrant-डोकर-VirtualBox के सब एक साथ अच्छी तरह से काम कर रहे हैं
0

मैं समस्या को पुन: उत्पन्न करने में असमर्थ था। हालांकि, मैंने वाग्रेंट के वर्चुअलबॉक्स प्रदाता से स्रोत कोड का थोड़ा सा पढ़ा है। ऐसा लगता है कि यह VBoxManage$PATH में शायद नहीं मिला। यह /usr/bin/VBoxManage पर स्थित होना चाहिए, भले ही होमब्रू के माध्यम से स्थापित किया जाए। संभावना है कि आपका $ पाथ वैरिएबल गलत था, या VBoxManage कहीं और था।

अन्य पाठकों को जो करना चाहिए एक ही समस्या है: यह सुनिश्चित करें कि /usr/bin सूचीबद्ध है सभी अन्य निर्देशिकाओं आम तौर पर $ पथ में पाया के साथ साथ,

  • चेक /etc/paths
  • ~/.bashrc या ~/.bash_profile नाम की एक फ़ाइल की तलाश करें। मैक ओएस एक्स डिफ़ॉल्ट रूप से उन फ़ाइलों में से किसी एक के साथ नहीं भेजता है, लेकिन कुछ उपयोगकर्ता उन्हें बैश को कस्टमाइज़ करने के लिए जोड़ते हैं, और कुछ प्रोग्राम स्वचालित रूप से उन्हें संपादित/संपादित करने का प्रयास कर सकते हैं। export PATH=... की तरह दिखने वाली किसी भी पंक्ति से सावधान रहें। ओएस एक्स पर, $ PATH में परिवर्तन /etc/paths और /etc/paths.d/* में किया जाना चाहिए, बैश स्क्रिप्ट में नहीं।
  • VBoxManage नामक एक्जिक्यूटिव के सभी ज्ञात स्थानों को देखने के लिए type -a VBoxManage चलाएं। वास्तविक बाइनरी पर कहीं अधिक प्राथमिकता ले रही है जो कहीं भी एक भयानक बाइनरी हो सकती है।
1

मुझे एक ही समस्या हो रही थी, और इसे नवीनतम संस्करण में वैग्रेंट अपडेट करके इसे 1.7.2, अपडेट किया गया था 1.8.1)।

+1

यह - अभी तक, 1.7.2 बोलोग्ना है, यह आजकल 1.8.1 के बारे में है। – James

2

Vagrant मामले के बारे में परवाह करता है (कम से कम 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 में एक डिफ़ॉल्ट प्रदाता सेट करने में भी सक्षम हो सकते हैं।

संबंधित मुद्दे