डॉक-कंपोज से डॉक कनेक्ट नहीं कर सकते


163

मैंने मैक ओएस 10.8.5 पर डॉक-मशीन 0.1.0 और डॉक-कंपोज़ 1.1.0 स्थापित किया।
डॉकर-मशीन सामान्य रूप से चल रही है और डॉकटर-मशीन ssh से जुड़ने में सक्षम है।

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev    *        virtualbox   Running   tcp://192.168.99.100:2376   

हालांकि डॉकटर-कंपोज से कनेक्ट नहीं किया जा सकता है।

$ docker-compose up

यह चल रहा है - //var/run/docker.sock: http + यूनिक्स पर डोकर डेमॉन से कनेक्ट नहीं कर सकते हैं?

यदि यह एक गैर-मानक स्थान पर है, तो URL को DOCKER_HOST पर्यावरण चर के साथ निर्दिष्ट करें।

माई डॉकरीफाइल और डॉकटर-कंपोज.माइल यहां है।

Dockerfile

FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376

डोकर-compose.yml

web:
  build: .

क्यों नहीं जुड़ सकता है? कोई विचार?


49
है docker-machineरूट के रूप में चलाने के? मैं सिर्फ उबंटू पर इसी समस्या के साथ आया था और यह सॉकेट पर अनुमतियाँ sudoथी - चाल चली।
SLD

7
लिनक्स पर उन लोगों के लिए, आपको बस docker ग्रुप में जुड़ना होगा
बैतंदवा

5
सिर्फ रन: सूडो डॉकटर-कंपोज़
गिरीश गुप्ता

मेरी भी यही समस्या थी। आपको डॉकटर को पुनः आरंभ करने की आवश्यकता है। sudo service docker restartया sudo service docker startमैंने इसे इसके साथ हल किया।
ओम भारतीय

उबंटू का उपयोग करने वालों के लिए, आपको sudo का उपयोग करना चाहिए और आपको उपयोगकर्ताओं को docker समूह में नहीं जोड़ना चाहिए । स्वीकार किए जाते हैं जवाब में टिप्पणियां देखें: askubuntu.com/questions/477551/...
कास

जवाबों:


89

डॉकटर मशीन चल रही है। लेकिन आपको डॉकर मशीन से कनेक्ट करने के लिए कुछ वातावरण निर्यात करने की आवश्यकता है। डिफ़ॉल्ट रूप से, dockerCLI क्लाइंट डेमॉन से संवाद करने की कोशिश कर रहा है http+unix://var/run/docker.sock(जैसा कि त्रुटि संदेश में दिखाया गया है)।

सही पर्यावरण चर का उपयोग करके निर्यात करें eval $(docker-machine env dev)और फिर पुनः प्रयास करें। आप docker-machine env devइसे निर्यात होने वाले पर्यावरण चर को देखने के लिए भी चला सकते हैं । ध्यान दें कि उनमें से एक है DOCKER_HOST, जैसे कि त्रुटि संदेश बताता है कि आपको सेट करने की आवश्यकता हो सकती है।


2
आप eval "$(docker-machine env default)"यह सुनिश्चित कर सकते हैं कि वह आपके बिन / पोस्टएक्टिनेट को हमेशा के लिए अद्यतित कर दे।
डेनिड

1
मुझे फ़ाइल बिन / पोस्ट-एक्टिवेट कहां मिलेगी?
लुकास शुल्ज़

या आप docker स्थापित करना भूल गए: $ eval $(docker-machine env dev) Command 'docker-machine' not found, but can be installed with: sudo snap install docker
R OMS

226

मेरे लिए सरल समाधान: sudo docker-compose up


UPDATE 2016-3-14: कुछ बिंदु पर docker इंस्टॉल प्रक्रिया (या docker-compose?) में आपका उपयोगकर्ता नाम "docker" समूह में जोड़ने के लिए एक सुझाव और उदाहरण है। यह आपको सभी docker कमांड से पहले "sudo" की आवश्यकता से बचने की अनुमति देता है, जैसे:

~ > docker run -it ubuntu /bin/bash
root@665d1ea76b8d:/# date
Mon Mar 14 23:43:36 UTC 2016
root@665d1ea76b8d:/# exit
exit
~ > 

इंस्टॉल कमांड के आउटपुट को ध्यान से देखें (docker-compose के लिए docker और 2nd install दोनों) और आपको आवश्यक कदम मिल जाएगा। यह यहां भी प्रलेखित है: https://subosito.com/posts/docker-tips/

Sudo? नहीं!

आप एक आदेश जारी करने के लिए sudo docker टाइपिंग से थक गए? हाँ, इससे निपटने का एक तरीका है। यद्यपि स्वाभाविक रूप से docker को मूल उपयोगकर्ता की आवश्यकता होती है, हम docker कार्रवाइयों के लिए एक रूट-समतुल्य समूह दे सकते हैं।

आप docker नामक समूह बना सकते हैं, फिर उस समूह में वांछित उपयोगकर्ता जोड़ सकते हैं। Docker सेवा को फिर से शुरू करने के बाद, उपयोगकर्ता को हर बार docker संचालन करने के लिए sudo टाइप करने की आवश्यकता नहीं होगी। यह एक शेल कमांड पर कैसा दिखता है? एक जड़ के रूप में, यहाँ आप जाते हैं:

> sudo groupadd docker
> sudo gpasswd -a username docker
> sudo service docker restart 

किया हुआ!

अद्यतन 2017-3-9

यहां डॉकर इंस्टॉलेशन निर्देश अपडेट किए गए हैं।

लिनक्स के लिए इंस्टालेशन के बाद के चरण

इस खंड में डॉकर के साथ बेहतर काम करने के लिए लिनक्स होस्ट को कॉन्फ़िगर करने के लिए वैकल्पिक प्रक्रियाएं हैं।

डॉकर को एक गैर-रूट उपयोगकर्ता के रूप में प्रबंधित करें

डोकर डेमॉन एक टीसीपी पोर्ट के बजाय एक यूनिक्स सॉकेट से बांधता है। डिफ़ॉल्ट रूप से कि यूनिक्स सॉकेट उपयोगकर्ता रूट के स्वामित्व में है और अन्य उपयोगकर्ता केवल sudo का उपयोग करके इसे एक्सेस कर सकते हैं। डोकर डेमॉन हमेशा रूट उपयोगकर्ता के रूप में चलता है।

यदि आप doo कमांड का उपयोग करते समय sudo का उपयोग नहीं करना चाहते हैं, तो doix नामक एक यूनिक्स समूह बनाएं और उसमें उपयोगकर्ताओं को जोड़ें। जब डॉकटर डेमन शुरू होता है, तो यह यूनिक्स सॉकेट के स्वामित्व को रीडर्स समूह द्वारा पढ़ा / लिखने योग्य बनाता है।

कर्ता समूह बनाने और अपने उपयोगकर्ता को जोड़ने के लिए:

# 1. Create the docker group.
$ sudo groupadd docker

# 2. Add your user to the docker group.
$ sudo usermod -aG docker $USER

# 3. Log out and log back in so that your group membership is re-evaluated.

# 4. Verify that you can run docker commands without sudo.
$ docker run hello-world

यह कमांड एक परीक्षण छवि डाउनलोड करता है और इसे एक कंटेनर में चलाता है। जब कंटेनर चलता है, तो यह एक सूचना संदेश प्रिंट करता है और बाहर निकलता है।


1
इसी तरह किसी कारण से
सूडो

12
लॉग आउट करने के बजाए ... आप कमांड का उपयोग कर सकते हैं:newgrp docker
थियागो फाल्को

उपशमन के साथ आह का विस्तृत उत्तर :-)
सुकुमार

1
पुन: "मेरे लिए सरल समाधान: sudo docker-compose up"। जब मैं कोशिश करता हूं कि, मुझे मिलता है:sudo: docker-compose: command not found
mblakesley

38

यदि आपने docker का उपयोग करना शुरू कर दिया है sudo, तो आपको docker-compose को sudo Like से चलाना चाहिए :sudo docker-compose up


यह मेरे लिए काम किया जब मैं sudo docker-compose buildबजाय भाग गया docker-compose build
anms_pro

26

डिफ़ॉल्ट रूप से docker डेमॉन हमेशा रूट उपयोगकर्ता के रूप में चलता है, इसलिए आपको sudoअपने Docker कमांड (ओं) को प्रस्तुत करने की आवश्यकता है।

यदि आप doo कमांड का उपयोग करते समय sudo का उपयोग नहीं करना चाहते हैं, तो doix नामक एक यूनिक्स समूह बनाएं और उसमें उपयोगकर्ताओं को जोड़ें। जब डॉकटर डेमन शुरू होता है, तो यह यूनिक्स सॉकेट के स्वामित्व को रीडर्स समूह द्वारा पढ़ा / लिखने योग्य बनाता है।

कर्ता समूह बनाने और अपने उपयोगकर्ता को जोड़ने के लिए:

  1. कर्ता समूह बनाएँ।

    $ sudo groupadd docker

  2. अपने उपयोगकर्ता को docker समूह में जोड़ें।

    $ sudo usermod -aG docker $USER

  3. लॉग आउट करें और वापस लॉग इन करें ताकि आपके समूह की सदस्यता का पुनर्मूल्यांकन हो।

  4. सत्यापित करें कि आप sudo के बिना कमांड कर सकते हैं।

    $ docker run hello-world

यह कमांड एक परीक्षण छवि डाउनलोड करता है और इसे एक कंटेनर में चलाता है। जब कंटेनर चलता है, तो यह एक सूचना संदेश प्रिंट करता है और बाहर निकलता है।

ऊपर उल्लिखित कदम आधिकारिक डॉकर प्रलेखन से आता है ।


हम डोकर स्थापित खिड़कियों पर यह कैसे कर सकते हैं?
जेफ कुक

इसके अलावा, जो मैंने docker- रचना को ठीक करने के लिए किया था वह उपयोगकर्ता को docker-composeमालिक के रूप में निष्पादित कर रहा था /usr/local/bin/docker-composeऔर फिर पुनः सेवा शुरू कर रहा था
सैम

groupसदस्यता को su - $USERलॉग ऑफ और ऑन
स्टुअर्ट कार्डॉल

19

जब आपको कोई त्रुटि मिलती है :

त्रुटि: http + docker में डॉकर डेमॉन से जुड़ नहीं सका: // localhost - क्या यह चल रहा है?

समाधान होगा:

  1. सबसे पहले, डॉकर सेवा की पुष्टि करने का प्रयास करें और अपने दूरस्थ / स्थानीय मशीन पर अपेक्षित रूप से चल रहा है :sudo service docker status

    यदि नहीं - भागो sudo service docker start या sudo systemctl start docker(कुछ लिनक्स संस्करणों पर निर्भर करता है, तो देखें कि डॉकर को निर्देश मिलना शुरू हो जाता है )।

  2. दूसरा, sudo के रूप में docker शुरू करें sudo docker-compose up


16

sudo systemctl start docker - डॉकर सेवा शुरू करना।

sudo docker-compose up उसके बाद।

मेरे पास फेडोरा 26 है, और उसी मुद्दे को हल करने की कोशिश कर रहा हूं जो मैंने अंततः फेडोरा डेवलपर्स के पेज पर डॉकर कंपोज में दर्ज किया और फिर फेडोरा डेवलपर्स के पेज पर डॉकर ने मेरी मदद की।

संभवतः, समुदाय द्वारा शुरू की गई डॉकटर सेवा को सिस्टम के साथ शुरू करने और हर समय पृष्ठभूमि में चलाने के लिए माना जाता है, लेकिन मेरे लिए यह इतना स्पष्ट नहीं था, और यही कारण है कि मैं सोच सकता हूं कि इस तरह का कोई लोकप्रिय जवाब क्यों नहीं है।

पर फेडोरा डेवलपर्स पेज वहाँ शिक्षा प्रणाली के साथ शुरू करने के लिए डोकर ऐसे सक्षम करें:

sudo systemctl enable docker


बदलें systemctlके साथ launchctlअगर आप मैक पर चला रहे हैं।
रोहित स्वामी

6

यदि आप लिनक्स पर हैं, तो आप docker-machineस्थापित नहीं हो सकते हैं क्योंकि यह केवल विंडोज और मैक कंप्यूटरों पर डिफ़ॉल्ट रूप से स्थापित है।

यदि ऐसा है, तो आपको अपने लिनक्स के संस्करण पर इसे कैसे स्थापित करना है, इसके लिए निर्देश खोजने के लिए: https://docs.docker.com/machine/install-machine/ पर जाना होगा।

स्थापित करने के बाद, docker-compose upऊपर सूचीबद्ध किसी भी चीज़ को आज़माने से पहले दौड़ना ।

आशा है कि यह किसी की मदद करता है। इसने फेडोरा 25 में मेरे डेविलबॉक्स इंस्टॉलेशन के लिए काम किया।


5

डॉकटर समूह में उपयोगकर्ताओं को जोड़ने के अलावा, sudoदोहराव से टाइप करने से बचने के लिए , आप इस dockerतरह से कमांड के लिए एक उपनाम भी बना सकते हैं :

alias docker-compose="sudo docker-compose"
alias docker="sudo docker"

4

यदि आप docker- मशीन का उपयोग कर रहे हैं तो आपको env variable का उपयोग करके पर्यावरण को सक्रिय करना होगा । incase आप docker- मशीन का उपयोग नहीं कर रहे हैं तो sudo के साथ अपने कमांड चलाएं


3

किसी ने लॉग इन चेक किया?

मेरे मामले में त्रुटि संदेश /var/log/upstart/docker.logथा:

Listening for HTTP on unix (/var/run/docker.sock) 
[graphdriver] using prior storage driver "aufs" 
Running modprobe bridge nf_nat failed with message: , error: exit status 1 
Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0" 

उल्लेख के लायक मैं vpn चालू था, इसलिए: $ sudo service openvpn stop $ sudo service docker restart $ docker-compose up|start $ sudo service openvpn start समाधान था।


3

@Srfrnk से जवाब मेरे लिए काम करता है।

मेरी स्थिति में, मेरे पास अगला डॉक्यू-कंपोज था। फाइल:

  nginx:
    build:
      context: ./
      dockerfile: "./docker/nginx.staging/Dockerfile"
    depends_on:
      - scripts
    environment:
      NGINX_SERVER_NAME: "some.host"
      NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
      NGINX_ERROR_LOG_LEVEL: debug
      NGINX_BACKEND_HOST: scripts
      NGINX_SERVER_ROOT: /var/www/html
    volumes:
      - ./docker-runtime/drupal/files:/var/www/html/sites/default/files:rw
    ports:
      - 80:80

./docker-runtimeमालिक और समूह - rootजब अन्य फ़ाइलें स्वामी - मेरा उपयोगकर्ता। जब मैंने बनाने की कोशिश कीnginx

Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

मैं जोड़ा ./docker-runtimeकरने के लिए .dockerignoreऔर यह मेरी समस्या हल कर रहा है।


3

दौड़ते समय docker-compose pull- मैं नीचे त्रुटि हो रही थी

त्रुटि: http + docker में डॉकर डेमॉन से कनेक्ट नहीं किया जा सका: // localhost

क्या यह चल रहा है?

उपाय -

sudo service docker start 

मसला हल हो गया


2

मेरे एक ही लक्षण हैं।

केवल इतना ही फर्क है कि यह केवल docker-compose build docker psकाम करने के दौरान हुआ । संस्करण के 2.xसाथ ही हुआ 3.x। फिर से शुरू की गई dockerसेवा, फिर मशीन ... यहां तक ​​कि फिर से स्थापित docker+ docker-compose

सब कुछ करने की कोशिश की लेकिन कुछ भी मदद नहीं की।

अंत में मैंने Dockerfile का उपयोग करके "मैन्युअल रूप से" बनाने की कोशिश की docker build

जाहिरा तौर पर मैं Dockerसंदर्भ के अंदर एक फ़ाइल / फ़ोल्डर पर एक अनुमति मुद्दा था । यह निर्माण शुरू करते समय संदर्भ को पढ़ने की कोशिश कर रहा था और एक उचित त्रुटि संदेश के साथ विफल रहा। हालाँकि इस त्रुटि संदेश का प्रचार नहीं किया गया docker-composeजो केवल दिखाता हैCouldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

पाया गया कि समाधान केवल फ़ाइल / फ़ोल्डर को फ़ाइल में जोड़ .dockerignoreरहा था क्योंकि यह निर्माण के लिए आवश्यक नहीं था। एक अन्य समाधान यह chownया हो सकता है chmod

वैसे भी शायद यह उसी मुद्दे पर आने वाले किसी व्यक्ति की मदद कर सकता है जिसका वास्तव में कोई लेना-देना नहीं है dockerऔर भ्रामक त्रुटि संदेश प्रदर्शित किया जा रहा है।


मुझे एक ही समस्या थी: एक माउंटेड वॉल्यूम में फ़ाइल की अनुमति। मेरे मामले में मेरे पास एक एसएसएल प्रमाणपत्र था जो रूट के स्वामित्व में था जिसे डॉकर वॉल्यूम में डाल दिया गया था। chown/ chmodतय किया। भयानक त्रुटि संदेश लेकिन वे इस पर काम कर रहे हैं। देखें github.com/docker/compose/issues/5318
bcattle

2

$ सूडो डॉकटर-कंपोज

मैंने स्टेप्स का पालन किया क्योंकि यह ग्रुप डॉकटर में $ USER जोड़ने के लिए उपरोक्त उत्तर में है। मैं एक नया समूह डॉकटर नहीं जोड़ना चाहता था क्योंकि मेरे डॉक इंस्टॉलेशन में डॉकटर नामक एक समूह स्वचालित रूप से निर्मित होता है।

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

लेकिन डॉक-कंपोज़ का उपयोग करने से भी काम नहीं हुआ। इसने पिछली त्रुटि दी। तो मेरे मामले में (Ubuntu 18.10) sudo docker-compose ने इस मुद्दे को सुलझा दिया।

ps: सलाह के लिए @Tiw धन्यवाद।


1
शायद यह बेहतर है कि समाधान पहले रखा जाए, और जो इसे नीचे समझा रहे हैं। इसके अलावा, आप अपने उत्तर को बेहतर बनाने के लिए संपादक के उन बटनों का उपयोग कर सकते हैं।
तिवारी

2

मुझे पता है कि यह मूर्खतापूर्ण है, लेकिन मेरे मामले में मैंने बस कोशिश की sudoऔर यह एक आकर्षण की तरह काम करता है।

आपके मामले में, बस कोशिश करें: $ sudo docker-compose up


1

इसे इस्तेमाल करे:

sudo ln -s / usr / स्थानीय / बिन / docker- रचना / usr / बिन / docker- रचना


1

मैंने निम्नलिखित चरणों का उपयोग करके समस्या का समाधान किया है

$ sudo service docker status
$ sudo service docker start
$ sudo docker-compose up

अब डॉकटर-कंपोज़ काम कर रहा है


0

मेरे लिए, मैंने डॉकर को अपग्रेड करना शुरू कर दिया और मिडवे को रद्द कर दिया। मैंने ध्यान नहीं दिया कि डॉकर नहीं चल रहा था (यदि यह था, तो बैटरी शेष, समय आदि के द्वारा मेरी मैकबुक के शीर्ष नौ बार में एक आइकन है)। एक बार मैंने इसे लॉन्च किया, और अपग्रेड को पूरा docker-compose upकिया , फिर से काम किया!


0

इस त्रुटि के लिए मेरे सेटअप को दो मामले मिले हैं:

  • __pycache__ कंटेनर के अंदर एकीकरण परीक्षण चलाने के बाद रूट उपयोगकर्ता द्वारा बनाई गई फ़ाइलें docker (आपको मूल समस्या बताती हैं) और docker-compose के लिए दुर्गम हैं (आपको docker hostiguously के बारे में बताता है);
  • microk8s जब तक मैंने इसे रोका नहीं, मेरा पोर्ट ब्लॉक कर दिया।

0

डेमॉन शुरू करने के लिए पहले dockerdया sudo dockerdयदि आवश्यक हो तो चलाने की कोशिश करें । आप के dockerdसाथ शुरू करने के लिए sudoआप भी docker-compose upसाथ चलाना चाहते हो सकता है sudo। अन्यथा ठीक है।

Https://github.com/docker/compose/issues/4181 से कार्य समाधान


0

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

बाहर निकलना

फिर सर्वर में फिर से ssh


0

निम्नलिखित ने मेरे लिए काम किया, मुझे यकीन नहीं है कि किस हिस्से ने चाल चली:

julian:project$ sudo service docker status
julian:varys$ 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 Wed 2020-07-15 01:21:16 UTC; 24min ago
     Docs: https://docs.docker.com
 Main PID: 6762 (dockerd)
    Tasks: 25
   CGroup: /system.slice/docker.service
           └─6762 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

julian:project$ export DOCKER_HOST=unix:///run/containerd/containerd.sock

julian:project$ sudo groupadd docker
groupadd: group 'docker' already exists
julian:project$ sudo gpasswd -a $USER docker
Adding user ubuntu to group docker
julian:project$ newgrp docker

julian:project$ ls -ln /var/run/ | grep docker
drwx------  5   0   0  120 Jul 15 01:10 docker
-rw-r--r--  1   0   0    4 Jul 15 01:10 docker.pid
srw-rw----  1   0 999    0 Jul 15 01:10 docker.sock

julian:project$ sudo rm /var/run/docker.sock                                                                                                                                                                                            
julian:project$ sudo rm /var/run/docker.pid

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