Docker कमांड Docker डेमॉन से कनेक्ट नहीं हो सकता है


246

मैं डॉकटर के लिए एक कदम बनाना चाहता हूं, इसलिए मैंने इसके साथ गड़बड़ करना शुरू कर दिया है। मैंने एक वर्चुअलबॉक्स Ubuntu 15.10 (विली वेयरवोल्फ) इंस्टॉलेशन पर डॉकर को स्थापित किया है और जैसा कि यहां बताया गया है कि मैंने फिर एक बेसिक नग्नेक्स डॉकर छवि चलाने की कोशिश की :

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

इसलिए मैंने जाँच की कि क्या डॉकर चल रहा था:

$ sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
     Docs: https://docs.docker.com
 Main PID: 7542 (docker)
   CGroup: /system.slice/docker.service
           └─7542 /usr/bin/docker daemon -H fd://

nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

इससे पता चलता है कि डॉकटर डेमन वास्तव में पहले से ही चल रहा है, लेकिन यह सुनिश्चित करने के लिए कि मैंने अभी डॉकर डेमन को मैन्युअल रूप से शुरू किया है:

$ sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   

INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0

मैंने तब छवि को फिर से चलाने की कोशिश की, लेकिन उसी परिणाम के साथ:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

मैंने कमांड को सूडो करने की कोशिश की, लेकिन कोई फायदा नहीं हुआ। मुझसे यहां क्या गलत हो रहा है?


1
एक ही समस्या है। मैं उबंटू 15.10 पर भी हूं :(
डैनियल लौरेइरो

1
एक ही समस्या, ubuntu 15.10
लुकास टेटामांति

1
बस अपने docker सेवा को फिर से शुरू करें। धन्यवाद @jim <pre> sudo service docker पुनरारंभ </ pre>
नसरुद्दीन

1
नसरुद्दीन, कि यकीन है कि मेरे लिए काम नहीं किया ...:
राफेल_ईस्पेरिकेटा

1
मुझे इसे काम करने के लिए मशीन को पुनरारंभ करना पड़ा।
romaroma

जवाबों:


443

आपको निम्नानुसार अपने वर्तमान उपयोगकर्ता को docker समूह में जोड़ने की आवश्यकता है:

sudo usermod -aG docker $(whoami)

फिर लॉगआउट और सिस्टम में फिर से लॉगिन करें या सिस्टम को पुनरारंभ करें। द्वारा परीक्षणdocker version

आगे जानकारी के लिए कैसे स्थापित करने के लिए डॉक-इंजन डॉक प्रलेखन का पालन करें


मूर्खतापूर्ण लेकिन यह मेरे लिए भी काम किया @RobinLoxley, यह एक वास्तविक जवाब होना चाहिए न कि केवल एक टिप्पणी, मुझे पता है अगर आप इसे पोस्ट करते हैं, तो मैं आपको एक upvote दूंगा;)
benka

9
मैं "लॉगआउट और सिस्टम में फिर से लॉगिन या सिस्टम को पुनः आरंभ करेगा" को रेखांकित करूँगा
मिशेल

3
नीचे दिए गए @ जवाब से पता चलता है कि लॉगआउट / लॉगिन स्टेप से बचने के लिए, यदि आप मेरी तरह हैं, तो आलसी इसलिए कि आप अपने ऐप्स को पुनः आरंभ नहीं करना चाहते हैं;)
ब्रांडीज़ी

यह वही है जो डॉकर ट्यूटोरियल में उल्लिखित है, लेकिन फिर से लॉग आउट करना और वापस मेरे लिए काम नहीं किया। मुझे इसे काम करने के लिए सिस्टम को पुनरारंभ करना पड़ा।
आलाप

4
मैं डॉक वर्जन की जानकारी देखता हूं, लेकिन आउटपुट के अंत में, मैं देखता हूंCannot connect to the Docker daemon. Is the docker daemon running on this host?
घनबरी

137

उपयोगकर्ता को डॉकटर समूह में जोड़ें

  • यदि यह पहले से मौजूद नहीं है, तो docker समूह जोड़ें:

    sudo groupadd docker

  • कनेक्टेड उपयोगकर्ता "$ {USER}" को डॉकटर समूह में जोड़ें:

    sudo gpasswd -a ${USER} docker

  • डॉकटर डेमॉन को फिर से शुरू करें:

    sudo service docker restart

  • newgrp dockerसमूहों में होने वाले परिवर्तनों को सक्रिय करने के लिए या तो एक लॉग आउट करें या लॉग आउट करें।


1
ऐसा लगता है कि newgrp dockerशेल के लिए स्थानीय है, लॉगिन सत्र नहीं। यह मैन पेज से बिल्कुल स्पष्ट नहीं है।
bergey

1
मेरे लिए काम किया। धन्यवाद!
अपोकै

एकमात्र जवाब जो काम किया! एक निजी क्लाउड लिनक्स मशीन पर, और यह अभी भी काम कर रहा है!
मेघना नटराज

Ubuntu 18.04 पर काम किया! धन्यवाद
क्षितिज सरावगी

33

आमतौर पर, निम्न आदेश चाल करता है:

sudo service docker restart

यह, docker startउन मामलों के बजाय जहां डॉकर पहले से ही चल रहे हैं।

यदि वह काम करता है, जैसा कि सुझाव दिया गया है और एक अन्य उत्तर में और इस GitHub मुद्दे पर , यदि आपने अपने आप को docker समूह में नहीं जोड़ा है, तो इसे चलाकर करें:

sudo usermod -aG docker <your-username> 

और आप जाने की सबसे अच्छी संभावना है।


के रूप में किसी और के लिए इस में bumping, कुछ OS के docker में इसे स्थापित करने के बाद सही शुरू नहीं होता है और, परिणामस्वरूप, वही can't connect to daemon messageदिखाई देता है। इस मामले में आप पहले यह सत्यापित कर सकते हैं कि डॉकर वास्तव में निष्पादित करके आपके docker सेवा की स्थिति की जाँच करके नहीं चल रहा है:

sudo service docker status

यदि आउटपुट कुछ ऐसा दिखता है: तो docker stop/waitingइसके बजाय docker start/running, process 15378इसका स्पष्ट अर्थ है कि डॉकर सक्रिय नहीं है। इस मामले में सुनिश्चित करें कि आप इसे इसके साथ शुरू करते हैं:

sudo service docker start

और, पहले की तरह, आप जाने की सबसे अच्छी संभावना होगी।


18

स्वयं पर ध्यान दें: जब मैं dockerकमांड चलाना भूल जाता हूं, तो मुझे प्रश्न के शीर्षक से त्रुटि मिलती है sudo:

sudo docker run ...

[Ubuntu 15.10]


12

एक ही मुद्दा था और मेरे लिए क्या काम था:
/var/run/docker.sock के स्वामित्व की जाँच करना

ls -l /var/run/docker.sock

यदि आप मालिक नहीं हैं तो कमांड के साथ स्वामित्व बदलें

sudo chown *your-username* /var/run/docker.sock

तब आप आगे जा सकते हैं और docker को निष्पादित करने का प्रयास करते हैं परेशानी मुक्त: D


2
अन्य सभी संभावनाओं को समाप्त करने के बाद, यह मेरे लिए सबायोन / जेंटू लिनक्स पर काम करने के लिए मिला है।
gerrit_hoekstra

वह फ़ाइल समूह के स्वामित्व rootमें है dockerdockerडॉकर के प्रलेखन के अनुसार सही दृष्टिकोण समूह को आपके वर्तमान उपयोगकर्ता को सौंपना है :sudo groupadd docker && sudo usermod -aG docker $USER
लुकास बस्टामेंटे

9

सब कुछ स्थापित करने और सेवा शुरू करने के बाद, अपने टर्मिनल को बंद करने और इसे फिर से खोलने का प्रयास करें, फिर अपनी छवि को खींचने का प्रयास करें

संपादित करें

मैं भी इस मुद्दे को फिर से था, अगर ऊपर समाधान काम नहीं करेगा, इस समाधान की कोशिश करें जो कि कमांड बलो है

sudo mv /var/lib/docker/network/files/ /tmp/dn-bak

विचार

यदि ऊपर दी गई कमांड आपको संभवतः नेटवर्क डॉकटर समस्याओं के साथ काम करती है, वैसे भी यह इसे हल करता है, इस बात की पुष्टि करने के लिए, कमांड बाइल के साथ लॉग देखें

tail -5f /var/log/upstart/docker.log

अगर आउटपुट में कुछ ऐसा है

FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints 
/var/run/docker.sock is up

आप वास्तव में नेटवर्क की समस्याओं के साथ हैं, हालांकि मुझे अभी तक नहीं पता है कि अगली बार जब आप पुनरारंभ करते हैं ( अपडेट , 2 महीने फिर से कोई समस्या नहीं) तो आपके ओएस को यह समस्या फिर से मिल जाएगी और अगर यह बग या स्थापना समस्या है

मेरा डोकर संस्करण

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

8

उबंटू पर डॉकटर स्थापित करने के बाद, मैंने निम्नलिखित कमांड चलाई:

sudo service docker start

या तुमने कोशिश की?


6

मुझे भी यही समस्या थी। इसे सुलझाने के लिए दो दिनों तक संघर्ष किया।

यह केवल तब काम किया जब मैंने किया:

  1. डॉकर के ट्यूटोरियल के अनुसार , यदि आपको पहले से उपयोग नहीं किया गया है, तो आपको डॉकर कुंजी जोड़ने की आवश्यकता है:

    $ sudo wget -qO- https://get.docker.com/gpg | sudo apt-key add -

  2. फिर सुनिश्चित करें कि आप docker विशेषाधिकार का उपयोग करके अपने आप को प्रदान करते हैं:

    $ sudo usermod -aG docker $USER

आशा है कि यह भी आपकी मदद करता है।


2
चरण 2 को इस प्रकार सरल किया जा सकता है:sudo usermod -aG docker $USER
johntellsall

5

मूल के रूप में दर्ज करें ( sudo su) और यह प्रयास करें:

unset DOCKER_HOST
docker run --name mynginx1 -P -d nginx

मुझे यहाँ भी यही समस्या है, और docker कमांड ने केवल रूट के रूप में काम किया है, और इस DOCKER_HOSTखाली के साथ भी

पुनश्च: यह भी सावधान रहें कि उबंटू पर स्थापित करने का सही और आधिकारिक तरीका उनके उपयुक्त रिपॉजिटरी (यहां तक ​​कि 15.10 पर) का उपयोग करना है, कि उस " wget " चीज के साथ।


उस "wget" चीज को सिर्फ आपके रिपॉजिटरी में docker रिपॉजिटरी में डाल दिया है .... अर्थात वही चीज़ जो आपको "सही और आधिकारिक तरीके से" करने के लिए कहा जाता है ....
Alar

1
मुझे डर है कि तुम गलत हो, अलार। "Wget" विधि आपके उपयुक्त स्रोत में docker रिपॉजिटरी को जोड़ेगी, जो कि अच्छा है, लेकिन यह कई अन्य बुरे काम भी करेगा जैसे कि DOCKER_HOST env var सेट करना, जो डॉकटर को आउट-ऑफ-द-बॉक्स चलाने से रोकेगा। क्या इसलिए नहीं कि दोनों विधियाँ रेपो में यह कहते हैं कि वे दोनों समान हैं।
डैनियल लौरेइरो

5

के लिए OSX :

डॉकटर खोलने और क्विकार्टार्ट टर्मिनल ( https://docs.docker.com/engine/installation/mac/ ) के माध्यम से 'डिफ़ॉल्ट' मशीन शुरू करने के बाद , आप डॉक कमांड की कोशिश करते हैं और इसे "docker daemon से कनेक्ट नहीं कर सकते" संदेश , यह पता चलता है कि आपको कुछ एनवी चर सेट की जरूरत है :

eval "$(docker-machine env default)"

फिर यह docker run hello-worldदेखने की कोशिश करें कि क्या सब कुछ आड़ू है।


5

उन लोगों के लिए जो पहले से ही आपकी मशीन को फिर से शुरू करने की कोशिश कर रहे हैं, पर्यावरण चर DOCKER_HOST को परेशान करते हुए जैसा कि docker env प्रलेखन में बताया गया है और बाकी सभी सिर्फ दस्तावेज के साथ जाने की कोशिश करते हैं

sudo service docker restart

केवल इसने मशीन को पुनरारंभ करने के बाद भी मेरे लिए चाल चली।


2
यह आवश्यक है यदि आप केवल लॉगआउट और लॉगिन करते हैं।
झांग लॉन्गक्यूआई

4

गैर-रूट एक्सेस देना - डॉकटर से

यदि यह पहले से मौजूद नहीं है, तो docker समूह जोड़ें।

$ sudo groupadd docker

कनेक्ट किए गए उपयोगकर्ता "$ {USER}" को docker समूह में जोड़ें।

अपने पसंदीदा उपयोगकर्ता से मिलान करने के लिए उपयोगकर्ता नाम बदलें।

इसके प्रभावी होने के लिए आपको लॉगआउट करना होगा और फिर से लॉग इन करना होगा।

$ sudo gpasswd -a ${USER} docker

डॉकर डेमॉन को फिर से शुरू करें।

$ sudo service docker restart

3

वर्तमान में यह प्रश्न Google खोज पर नंबर 3 है। अपने लिनक्स सिस्टम पर इस समस्या को हल करने में कुछ शोध करने के बाद मैंने सोचा कि मैं यह उत्तर लिखूंगा। मूल पोस्ट में कहा गया है कि समस्या उबंटू पर है लेकिन मैंने फेडोरा का उपयोग करके भी समस्या का अनुभव किया। इस बात को ध्यान में रखते हुए, यहाँ मैंने समस्या को ठीक करने के लिए किया है।

फेडोरा 22 पर

डॉकिंग की स्थापना:

$> curl -fsSL https://get.docker.com/ | sh

डॉकर स्थापित करने के बाद:

उपयोगकर्ता को डॉकटर समूह में जोड़ने की आवश्यकता है।

$> sudo usermod -aG docker

डॉकटर डेमॉन को शुरू करने की जरूरत है

$> sudo service docker start

आप बूट पर शुरू करने के लिए डेमन सेट कर सकते हैं

$> sudo chkconfig docker on

आप सत्यापित कर सकते हैं कि docker सेवा चल रही है

$> service docker status

और एक अंतिम अंतिम जांच

$> docker run hello-world

फेडोरा 23 पर, इस समूह को बुलाया जा सकता है dockerroot। इसके अलावा, आप शायद इसे रिपॉजिटरी (इसके बजाय curl ... | sh) से इंस्टॉल करना चाहते हैं ताकि इसे बाद में अपडेट किया जा सके:dnf install docker
बुनियादी ६

बहुतों के पास एक समूह "docker" नहीं है, इसलिए हमें इसे पहले जोड़ना होगा groupadd dockerऔर फिर इसे अपने यूज़रनेम में जोड़ना होगाsudo usermod -aG docker your_username
TonyTony

2

आपके द्वारा चलाए जा रहे आदेश के साथ "sudo" का उपयोग करने का प्रयास करें।


"मैंने कमांड को सूद करने की कोशिश की, लेकिन कोई फायदा नहीं हुआ। क्या किसी को पता है कि मैं यहां क्या गलत कर रहा हूं? सभी सुझावों का स्वागत है!"
RhinoDevel 20

2

मैं एक ही मुद्दा है, जबकि docker चला रहा हूँ।

आप sudo उपयोगकर्ता के रूप में कमांड चला सकते हैं :

sudo docker ***your command here***

2

उबंटू के लिए:
जब मैंने अपडेट किया तो मेरे साथ हुआ।
आपको सेवा और सॉकेट को अनमास्क करने की आवश्यकता है और फिर सेवा को पुनरारंभ करें।

मेरे लिए काम करने के बाद:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

पर्दे के पीछे क्या
खुशी होती है सिस्टमड भी एक इकाई को पूरी तरह से अस्थिर, स्वचालित रूप से या मैन्युअल रूप से चिह्नित करने की क्षमता रखता है, इसे / देव / अशक्त से जोड़कर। इसे यूनिट को मास्किंग कहा जाता है, और मास्क कमांड के साथ संभव है।

sudo systemctl mask docker.service

आप नकाबपोश सेवाओं की सूची की जाँच कर सकते हैं:

sudo systemctl list-unit-files

Sudo systemctl लिस्ट-यूनिट-फाइलों का आउटपुट

सेवा का स्वत: / मैन्युअल प्रारंभ सक्षम करने के लिए आपको इसका उपयोग करने की आवश्यकता है:

sudo sytemctl unmask docker.service

अब सेवा को नीचे दिखाए अनुसार सक्षम किया जाएगा यहां छवि विवरण दर्ज करें


1

जैसा कि docker एक यूनिक्स सॉकेट से मिलता है, जो स्टार्ट अप करते समय रूट के स्वामित्व में होता है, 'doo कमांड' के साथ 'sudo' का उपयोग करेगा।


1
  1. मेरा भी यही मुद्दा था। समस्या डॉक-डेमॉन और डॉक-क्लाइंट को आवंटित सॉकेट्स में थी।
  2. पहले, docker.sock पर docker- क्लाइंट के लिए अनुमति सेट नहीं की गई थी। आप "sudo usermod -aG docker $ USER" का उपयोग करके इसे सेट कर सकते हैं
  3. फिर अपने bash फ़ाइल की जाँच करें जहाँ docker-client चल रहा है, मेरे लिए यह 0.0.0.0:2375 पर था, जबकि docker-daemon यूनिक्स सॉकेट पर चल रहा था। (यह dockerd की कॉन्फ़िगरेशन फ़ाइल में सेट किया गया था)।
  4. बस बैश-लाइन टिप्पणी करें और यह ठीक काम करेगा।
  5. लेकिन अगर आप इसे यूनिक्स सॉकेट के बजाय टीसीपी पोर्ट पर काम करना चाहते हैं, तो डॉकर्ड की कॉन्फ़िगरेशन फ़ाइल को बदलें और इसे 0.0.0.0.2375 पर सेट करें और लाइन को बैश में रखें क्योंकि यह मौजूद है या इसे 0.0.0.0 पर सेट करें: 2375।

1

शायद यह किसी को मदद करेगा, क्योंकि त्रुटि संदेश बेहद अनपेक्षित है, और मैं बिना किसी लाभ के कई बार मानक अनुमति चरणों के माध्यम से चला गया था।

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

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

मेरे पास पहले से काम करने वाला डॉक इंस्टॉल था, और अपने लैपटॉप को रिबूट करने के बाद यह बस काम करने से इनकार कर दिया। डॉक उपयोगकर्ता समूह में सही ढंग से जोड़ा गया था, सॉकेट आदि पर सही अनुमति थी, लेकिन फिर भी नहीं चल सका docker login,docker run ... आदि यह मेरे लिए यह तय हो गई। दुर्भाग्य से मुझे प्रत्येक रिबूट पर इसे चलाना होगा। इसका उल्लेख कुछ गितुब मुद्दों पर एक वर्कअराउंड के रूप में भी किया गया है, हालांकि यह एक बग की तरह लगता है कि यह डॉकर के सही संचालन के लिए एक स्थायी बाधा है (नोट: मैं आर्क लिनक्स पर हूं, ओएसएक्स नहीं, लेकिन यह उसी मुद्दे के लिए था मुझे)।


1

उबंटू 16.04 में परीक्षण किया गया

# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker

# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e '[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376' >> /etc/systemd/system/docker.service.d/override.conf

# restart service
systemctl daemon-reload
service docker restart

0

मुझे Amazon EC2 उदाहरण पर समान त्रुटि का सामना करना पड़ा है। उदाहरण को पुनरारंभ करने के बाद समस्या ठीक हो गई।


0

वर्तमान उपयोगकर्ता को docker समूह में जोड़ें:

sudo usermod -aG docker $(whoami)


कृपया इसे कोड के रूप में प्रारूपित करें! और इस कमांड को समझाएं। और --विकल्पों के लंबे (शुरुआती ) संस्करणों का उपयोग करें।
buhtz

0

के लिए उबंटू 16.04

अंदर फ़ाइल /lib/systemd/system/docker.serviceपरिवर्तन:

ExecStart=/usr/bin/dockerd fd://

साथ में:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

अंदर फ़ाइल /etc/init.d/dockerपरिवर्तन:

DOCKER_OPTS=

साथ में:

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

और फिर अपने कंप्यूटर को पुनरारंभ करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.