डॉकर आसानी से कंटेनरों का उपयोग करके एप्लिकेशन बनाने, तैनात करने और चलाने की क्षमता के साथ अधिक से अधिक लोकप्रिय हो रहा है। कंटेनर डेवलपर्स को एक पूर्ण पैकेज के रूप में तैनात करने से पहले अपने सभी पुस्तकालयों और निर्भरताओं के साथ एक एप्लिकेशन को पैकेज करने की अनुमति देते हैं। इंस्टॉल करना लिनक्स पर डॉकर अपेक्षाकृत आसान है। आपको बस टर्मिनल में कुछ कमांड चलाने की जरूरत है, और आप जाने के लिए तैयार हैं।
हालाँकि, यह सभी उपयोगकर्ताओं के लिए समान नहीं हो सकता है, यहां तक कि एक सफल स्थापना के बाद भी। सबसे आम उत्पन्न होने वाली त्रुटि में से एक है:डॉकर डेमॉन से कनेक्ट नहीं हो सकता (unix:///var/run/docker.sock। क्या डॉकर डेमॉन चल रहा है?) यह त्रुटि तब उत्पन्न हो सकती है जब विभिन्न docker कमांड जैसे docker run, docker info, docker pull, docker stop, आदि चलाते हैं।
त्रुटि का कारण क्या है:डॉकर डेमॉन से कनेक्ट नहीं हो सकता?
कई डेवलपर्स की शिकायतें प्राप्त करने के बाद, हमने इसमें गोता लगाने और प्रभावी समाधान के साथ आने का फैसला किया। इस त्रुटि को ट्रिगर करने वाले कुछ कारणों में शामिल हैं:
- डॉकर डेमॉन चल रहा . नहीं है ।
- डॉकर बंद नहीं करता सफाई से।
- रूट विशेषाधिकारों का अभाव डोकर सेवा शुरू करने के लिए।
अब जब आपको समस्या के कारण की बुनियादी समझ हो गई है, तो आइए आपके लिए उपलब्ध विभिन्न समाधानों को देखें।
समाधान 1:डॉकर सेवा को systemctl के साथ प्रारंभ करें
यदि आपने अभी-अभी उबंटू पर डॉकर का नया इंस्टालेशन पूरा किया है या अपने पीसी को रीबूट किया है, तो इस बात की बहुत अधिक संभावना है कि डॉकर सेवा नहीं चल रहा है . Docker daemon (dockerd) docker की सिस्टम सेवा है। यह सेवा विभिन्न डॉकर ऑब्जेक्ट्स जैसे इमेज, कंटेनर, नेटवर्क और वॉल्यूम को संभालती है और डॉकर एपीआई अनुरोधों को सुनती है।
Systemctl कमांड पुराने SysV init सिस्टम को बदलने के लिए आता है, और यह systemd सेवाओं का प्रबंधन करता है लिनक्स सिस्टम पर चल रहा है। अगर आपके सिस्टम में systemctl नहीं है, तो चिंता न करें; सेवा का उपयोग करें नीचे वर्णित के रूप में आदेश।
नोट: यह विधि केवल उन उपयोगकर्ताओं के लिए काम करती है जिन्होंने डॉकर को एपीटी पैकेज मैनेजर के साथ स्थापित किया है। अगर आपने डॉकर को SNAP . के माध्यम से स्थापित किया है , समाधान 5 . देखें नीचे।
- टर्मिनल खोलें और पहला आदेश निष्पादित करें - डॉकर को अनमास्क करें ।
sudo systemctl unmask docker
यदि हम डॉकर के नकाबपोश होने पर डॉकटर सेवा शुरू करने का प्रयास करते हैं, तो हमें त्रुटि का सामना करना पड़ सकता है 'डॉकर शुरू करने में विफल। सेवा:इकाई नकाबपोश है। मास्क को अक्षम करने का एक अधिक मजबूत संस्करण माना जा सकता है। जब एक यूनिट फाइल को मास्क किया जाता है, तो यूनिट को 'dev/null' से जोड़ा जाता है। आप सभी यूनिट फाइलों की स्थिति को कमांड के साथ सूचीबद्ध कर सकते हैं - '$ systemctl list-unit-files '
2. एक बार डॉकर इकाई के अनमास्कड . हो जाने पर , हम डॉकर प्रारंभ कर सकते हैं डेमन systemctl कमांड के साथ। डॉकर डेमन छवियों, कंटेनरों और डॉकर एपीआई अनुरोधों जैसे डॉकर ऑब्जेक्ट्स का प्रबंधन करता है। नीचे दिए गए कमांड को कमांड-लाइन पर निष्पादित करें।
systemctl start docker
3. सत्यापित . करने के लिए क्या डॉकर सेवा सक्रिय है और चल रही है . हम systemctl स्थिति . का उपयोग करेंगे आदेश, जो विशेष सेवा की वर्तमान स्थिति को दर्शाता है। नीचे दिए गए आदेश को अपने टर्मिनल पर निष्पादित करें।
systemctl status docker
ऊपर की छवि से, हम देख सकते हैं कि डॉकर सक्रिय है और चल रहा है ।
समाधान 2:'विफल डॉकर पुल' को साफ़ करें और डॉकर सेवा प्रारंभ करें
ऐसे मामले हैं जहां आप कंटेनर खींचते समय अप्रत्याशित रूप से डॉकर को बंद कर सकते हैं। ऐसी स्थितियां docker.service . को मुखौटा बना देंगी और docker .socket फ़ाइलें। Docker.socket '/var/run/docker.sock' पर स्थित एक फ़ाइल है और इसका उपयोग डॉकर डेमॉन के साथ संचार करने के लिए किया जाता है। हमें अनमास्क . करना होगा दो-इकाई फ़ाइलें - docker .service और docker.daemon आगे बढ़ने से पहले डॉकर प्रारंभ करने के लिए।
- टर्मिनल लॉन्च करें और आदेश . निष्पादित करें नीचे:
systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.service
यदि आप नीचे दिए गए आदेशों को निष्पादित करने के बाद भी त्रुटि का अनुभव कर रहे हैं, तो हमें हटाना . की आवश्यकता होगी कंटेनर . में फ़ाइलें डॉकर को फिर से शुरू करने से पहले निर्देशिका। कंटेनरड डॉकर 1.11 में पेश की गई एक विशेषता थी और इसका उपयोग डॉकर छवियों के जीवन-चक्र को प्रबंधित करने के लिए किया जाता है।
2. टर्मिनल खोलें और नीचे दिए गए आदेशों को निष्पादित करें। सुनिश्चित करें कि आप रूट पासवर्ड . जानते हैं चूंकि हमें आदेशों को निष्पादित करने के लिए उन्नत विशेषाधिकारों की आवश्यकता होगी।
sudo su service docker stop cd /var/run/docker/libcontainerd rm -rf containerd/* rm -f docker-containerd.pid service docker start
समाधान 3:Dockerd (Docker Daemon) सेवा प्रारंभ करें
डॉकर्ड डॉकर डेमॉन है जो डॉकर एपीआई को सुनता है और विभिन्न डॉकर ऑब्जेक्ट्स का प्रबंधन करता है। डॉकर्ड को कमांड के विकल्प के रूप में इस्तेमाल किया जा सकता है '$ systemctl start docker ' जिसका उपयोग डॉकर डेमॉन को प्रारंभ करने के लिए भी किया जाता है।
- टर्मिनल खोलें और डॉकर्ड प्रारंभ करें नीचे दिए गए आदेश को क्रियान्वित करके:
sudo dockerd
समाधान 4:Docker को सर्विस कमांड से प्रारंभ करें
यदि आप SysV init सिस्टम . का उपयोग कर रहे हैं , तो systemctl कमांड आपके लिए काम नहीं करेगा। हमें सेवा आदेश का उपयोग करने की आवश्यकता होगी डॉकर डेमॉन प्रारंभ करने के लिए ।
- टर्मिनल लॉन्च करें और निष्पादित करें नीचे दिए गए आदेश:
sudo service --status-all sudo service docker start
समाधान 5:स्नैप के साथ डॉकर सेवा प्रारंभ करें
अगर आपने डॉकर को स्नैप पैकेज मैनेजर . के साथ इंस्टॉल किया है , आपको docker daemon को प्रबंधित करने के लिए स्नैप कमांड का उपयोग करना होगा।
आम तौर पर, स्नैप अपनी सेवाओं को स्वचालित रूप से प्रबंधित करता है। हालाँकि, इस त्रुटि जैसी स्थितियों में, इसे मैन्युअल हस्तक्षेप की आवश्यकता होगी। स्नैप कमांड के साथ आप जिन कुछ तर्कों का उपयोग कर सकते हैं उनमें स्टॉप, स्टार्ट और रीस्टार्ट शामिल हैं। हमारे मामले में, हम प्रारंभ पैरामीटर का उपयोग करेंगे।
- टर्मिनल खोलें और डॉकर प्रारंभ करें . के लिए नीचे दिए गए आदेश को निष्पादित करें ।
sudo snap start docker
2. सत्यापित . करने के लिए नीचे दिए गए आदेश को निष्पादित करें क्या डॉकर सेवा प्रारंभ की गई थी।
sudo snap services
वह सूची होगा सभी चल रही स्नैप सेवाएं ।
यदि उपरोक्त आदेश आपके लिए काम नहीं करते हैं, तो डॉकर को जोड़ने का प्रयास करें:होम प्लग चूंकि यह डिफ़ॉल्ट रूप से स्वतः कनेक्ट नहीं होता है। एक बार हो जाने के बाद, शुरू करें डॉकर सेवा ।
3. टर्मिनल लॉन्च करें और नीचे दिए गए कमांड चलाएँ:
sudo snap connect docker:home :home sudo snap start docker
समाधान 6:रूट पी के बिना उपयोगकर्ताओं के लिए डॉकर प्रारंभ करेंप्रतिबंध
उन्नत विशेषाधिकारों की कमी . के कारण भी त्रुटि उत्पन्न हो सकती है और उपयोगकर्ता के पास 'unix:///var/run/docker.sock' तक पहुंच नहीं है। सौभाग्य से एक समाधान है। हम Docker Host वैरिएबल को पोर्ट 2375 के जरिए लोकलहोस्ट में एक्सपोर्ट करेंगे।
- टर्मिनल खोलें और नीचे कमांड चलाएँ:
export DOCKER_HOST=tcp://localhost:2375
समाधान 7:डॉकर को पुनर्स्थापित करें
यदि उपरोक्त समाधान त्रुटि का समाधान नहीं करते हैं, तो इस बात की उच्च संभावना है कि आपके पास स्थापना त्रुटियां हो सकती हैं। अपने Linux सिस्टम में Docker को सही ढंग से स्थापित करने के लिए, Docker की आधिकारिक वेबसाइट के चरणों का पालन करें।