ओएस एक्स पर डॉकर वीएम स्थापित लेकिन कमांड विफल दिखाई देते हैं

मैं अपने स्थानीय मैक ओएस एक्स मशीन पर डॉकर स्थापित कर रहा हूं और इसे काम करने के लिए कुछ मुद्दों पर चल रहा हूं । मैंने स्थापना निर्देशों का पालन किया है https://docs.docker.com/installation/mac/. बूट 2 डॉकर टूल को स्थापित करने के लिए सब कुछ सुचारू रूप से चलता प्रतीत होता है, लेकिन वीएम चलने के बाद, डॉकर कमांड कुछ भी नहीं करते हैं । जैसे।,

$ docker run ubuntu echo hello world2014/06/17 08:20:54 Post http://localhost:4243/v1.12/containers/create: EOF

प्रत्येक कमांड ईओएफ में समाप्त होता है और ऐसा नहीं लगता है कि इसे वास्तव में क्या करना चाहिए । यहाँ एक और है:

$ docker ps2014/06/17 08:25:10 Get http://localhost:4243/v1.12/containers/json: EOF

वीएम द्वारा बनाई गई boot2docker उपकरण चल रहा है, के रूप में अच्छी तरह से:

$ boot2docker status[2014-06-17 08:26:24] boot2docker-vm is running.

मुझे लगता है कि कुछ सही ढंग से सेट नहीं किया गया है, लेकिन मैंने लाइन द्वारा निर्देश लाइन का पालन किया और यह नहीं देख सकता कि कुछ गलत कहां हो रहा है ।

किसी भी मदद की बहुत सराहना की है, धन्यवाद!

अद्यतन 1

बूट 2 डॉकर संस्करण: 1.0.0 या 0.9.1 (निश्चित नहीं है-कोई संस्करण ध्वज नहीं है)

$ boot2docker ipUsage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download}

पर boot2docker उदाहरण:

$ sudo netstat -ntpl | grep dockertcp        0      0 :::2375                 :::*                    LISTEN      743/docker$ docker --versionDocker version 1.0.0, build 63fe64c

अद्यतन 2

मैंने अभी बूट 2 डॉकर को फिर से स्थापित किया है और अब मैं हूं निश्चित रूप से चल 1.0.0.

$ boot2docker versionClient version: v1.0.0Git commit: 2fef7b2

मैंने दस्तावेज़ीकरण में कमांड को फिर से चलाया (जो कमांड लाइन पर डॉकर_होस्ट सेट करने के लिए कमांड ने मुझे जो बताया, उसके साथ संघर्ष करता है, नीचे देखें):

$ boot2docker up2014/06/17 18:25:43 Waiting for VM to be started................................2014/06/17 18:26:41 Started.2014/06/17 18:26:41 Auto detection of the VM's IP address.2014/06/17 18:26:41 To connect the Docker client to the Docker daemon, please set:2014/06/17 18:26:41     export DOCKER_HOST=tcp://:4243

लेकिन मैं अभी भी मूल मुद्दा देख रहा हूं ।

$ docker run ubuntu echo hello world2014/06/17 18:28:29 Post http://127.0.0.1:4243/v1.12/containers/create: EOF

मैं फिर दस्तावेज़ीकरण में उल्लिखित कमांड को फिर से चलाता हूं:

$ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375

और अब यह देखें:

$ docker run ubuntu echo hello world2014/06/17 18:31:39 Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

मुझे उल्लेख करना चाहिए कि चलाने की कोशिश कर रहा है docker -d ओएस एक्स पर इस संदेश को गोली मारता है:

$ docker -d2014/06/17 18:34:04 The Docker daemon is only supported on linux

जो ज्यादा मदद नहीं है । ..

जांच करने के लिए कुछ चीजें:

अद्यतन संस्करण के boot2docker

जांचें कि आपका बूट 2 डॉकर अद्यतित है । यदि आपने होमब्रे जैसे एप्लिकेशन के माध्यम से इंस्टॉल किया था, तो हो सकता है कि आप एक पुराना संस्करण चला रहे हों । आधिकारिक रिलीज की जाँच करें https://github.com/boot2docker/osx-installer/releases. दौड़ना सुनिश्चित करें boot2docker delete और फिर boot2docker init उन्नयन के बाद ।

अद्यतन डॉकर क्लाइंट

बूट 2 डॉकर में चल रहे सर्वर के संस्करण से मेल खाने वाले डॉकर क्लाइंट को चलाने के लिए शायद यह एक अच्छा विचार है । यदि आप डॉकर 1.0 को बूट 2 डॉकर में चला रहे हैं, तो सुनिश्चित करें कि आपके पास 1.0 क्लाइंट है https://github.com/boot2docker/osx-installer/releases.

सही पोर्ट निर्यात करें

हो सकता है कि आपके कमांड में पोर्ट सही न हो । क्या आपको दौड़ना याद था export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375 प्रलेखन की तरह कहते हैं? पोर्ट 2375 डॉकर 1.0 के लिए नया डिफ़ॉल्ट है (जो बूट 2 डॉकर 0.9.1 और 1.0.0 दोनों में है) ।

फॉरवर्ड सही पोर्ट

अद्यतन करने के बाद DOCKER_HOST क्लाइंट के लिए, आप बूट 2 डॉकर 0.9.1 के साथ एक समस्या में भाग सकते हैं जिसने डॉकर टीसीपी कनेक्शन के लिए गलत पोर्ट का उपयोग किया था । जाँच करने के लिए कदम:

  1. बूट 2 डॉकर वीएम का उपयोग करके लॉगिन करें boot2docker ssh (पासवर्ड है tcuser).
  2. फिर सुनने वाले पोर्ट का उपयोग करके जांचें sudo netstat -ntpl | grep docker (शायद 2375).
  3. अब वर्चुअलबॉक्स खोलें, बूट 2 डॉकर वीएम की सेटिंग में जाएं, फिर क्लिक करें Port Forwarding बटन।
  4. यह बूट 2 डॉकर (संभवतः) में पोर्ट सुनने से मेल खाना चाहिए 2375).
  5. यदि पोर्ट मेल नहीं खाता है, तो पोर्ट फ़ॉरवर्डिंग को अपडेट करने का प्रयास करें, फिर क्लाइंट को फिर से आज़माएं ।

एंडी ने मुझे वहां 99% रास्ता दिया। मैं उनके उत्तर को स्वीकृत उत्तर के रूप में चिह्नित कर रहा हूं, लेकिन मैं यहां लिखूंगा कि मेरी समस्या क्या हल हुई । बूट 1.0.0 के सही संस्करण (2 डॉकर) को स्थापित करने के बाद, मुझे अभी भी किसी भी डॉकर कमांड से गलत आउटपुट मिल रहा था ।

मैंने तब वर्चुअलबॉक्स खोला और बंदरगाहों को पढ़ा, और, लो और निहारना, बंदरगाह गलत थे । हालांकि, उन्हें सही मानों पर स्विच करने से समस्या ठीक नहीं हुई ।

मैंने वीएम को रीसेट करने का फैसला किया, क्योंकि पुराने बूट 2 डॉकर ने शायद इसे गलत तरीके से सेट किया था । निम्न आदेशों ने समस्या को ठीक कर दिया ।

$ boot2docker delete$ boot2docker init$ export DOCKER_HOST=tcp://:2375

यह ऑफ टॉपिक क्यों है? मेरे लिए एक पूरी तरह से वैध सवाल की तरह लगता है । मैं इसी तरह के मुद्दों में भाग गया ।

मुझे इसका एहसास नहीं हुआ । लेकिन मुझे लगता है कि जब वे “पेशेवर” कहते हैं तो उनका मतलब अधिक “उत्पादन प्रणाली” समस्याओं से है । चूंकि आप मैक पर कंटेनर चलाने के बारे में पूछते हैं, इसलिए उन्हें यह मान लेना चाहिए कि यह एक विकास वातावरण है । स्टैक ओवरफ्लो के लिए सवाल बेहतर हो सकता है । मैं हमेशा इस धारणा के तहत था कि सर्वर की गलती सर्वर और डेमॉन से संबंधित प्रश्नों के लिए थी जहां स्टैक ओवरफ्लो अधिक कोड आधारित था । लेकिन मुझे लगता है कि मेरी धारणाएं थोड़ी दूर थीं ।

क्या आप थोड़ी अधिक डिबगिंग जानकारी प्रदान कर सकते हैं? boot2docker संस्करण में कम से कम? शायद बूट 2 डॉकर वीएम के लिए एसएसएच भी और` डॉकर-संस्करण ’ आउटपुट प्राप्त करें? मुझे संदेह है कि यह नवीनतम बूट 2 डॉकर के साथ एक वीएम पोर्ट अग्रेषण मुद्दा है जो डॉकर 1.0 में अपग्रेड किया गया है, जो एक नए पोर्ट का उपयोग करता है ।

यह भी प्रतीत होता है कि आपका क्लाइंट पोर्ट गलत है (कम से कम डॉकर 1.0 के लिए) । मैंने दो संभावित मुद्दों के साथ एक उत्तर बनाया जो हो सकता है ।

एंडिशिन जाहिर है, “विकास पर्यावरण” के बारे में एक सवाल पूछना बंद करने का आधार है । लगता है कि किसी को आश्चर्य करना होगा जहां कोई भी बंद किए बिना इन जैसे प्रश्न पूछ सकता है । …