स्नैप के रूप में स्थापित करने के बाद डॉकर को चलाने पर अनुमति से इनकार कर दिया गया


33

मैंने सॉफ़्टवेयर स्टोर के माध्यम से डॉकर को स्थापित किया है, जिसने संकेत दिया कि यह एक स्नैप पैकेज था। जो मेरे द्वारा ठीक है, मुझे लगता है, लेकिन दुर्भाग्य से, मेरे द्वारा कोशिश की गई हर डॉकर कमांड काम नहीं करती है:

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

इसे ठीक करने के लिए कोई भी विचार?

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


डॉक आधिकारिक रिपॉज से स्थापित डॉकटर। डॉकर पहले से ही चल रहा था जब मैंने अपने उपयोगकर्ता को dockerसमूह में जोड़ा , id -nGडॉकटर नहीं दिखाया और किसी भी dockerआदेश के परिणामस्वरूप अनुमति से इनकार कर दिया। लॉग आउट और बैक में काम नहीं किया क्योंकि docker system प्रक्रिया चलती रहती है। रिबूटिंग सिस्टम या पुनः आरंभ करने वाले docker ने उपयोगकर्ता को docker समूह के भाग के रूप में दिखाया और docker कमांड निष्पादित करने की अनुमति दी। नोट: 0 प्रतिनिधि, टिप्पणी नहीं जोड़ सकता।
संतोष पटेल 12

जवाबों:


33

यह GitHub पृष्ठ से है, क्या आपने इन सटीक चरणों की कोशिश की:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

से डोकर तस्वीर GitHub


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

2
अक्षम करने / सक्षम करने वाले स्नैप ने मेरे लिए चाल चली, धन्यवाद
मनीष कुमार

1
यह उबंटू (डेस्कटॉप) 19.04 पर भी लागू होता है।
निक ब्रिन

31

त्रुटि संदेश आपको बताता है कि आपका वर्तमान उपयोगकर्ता docker इंजन का उपयोग नहीं कर सकता है, क्योंकि आपको इंजन के साथ संचार करने के लिए यूनिक्स सॉकेट तक पहुंचने की अनुमति नहीं है।

अस्थायी समाधान

sudoहर बार उन्नत अनुमतियों के साथ कमांड निष्पादित करने के लिए कमांड का उपयोग करें ।

स्थायी (सुझाया गया) समाधान

dockerसमूह में वर्तमान उपयोगकर्ता जोड़ें । इसे टाइप करके हासिल किया जा सकता है

sudo usermod -a -G docker $USER

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

स्रोत: techoverflow.net


1
जाहिरा तौर पर आपका गूगल-फू मेरा से बेहतर है। दुर्भाग्य से, यह काम नहीं करता है। सबसे पहले, dockerसमूह मौजूद नहीं था। मैं फिर पहले भागा sudo addgroup dockerऔर फिर आपकी आज्ञा का पालन किया, फिर लॉग आउट किया और फिर से। दुर्भाग्य से, प्रश्न में दिखाई गई त्रुटि बनी रहती है ...
विंसेंट

2
@Vincent आप भूल गए कि समूह परिवर्तन तुरंत नहीं हुए, क्या आपने? कोशिश करो newgrp dockerया बाहर लॉग इन करें और।
ADDB 9

नहीं, क्षमा करें, यह उल्लेख करना भूल गया कि - आपने प्रतिक्रिया देते समय मैंने अपनी टिप्पणी अपडेट की है :) रनिंग groups vincentदेता है:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
विन्सेन्ट

@ सिर्फ संदर्भ के लिए, अपने docker डेमन शुरू कर दिया है, है ना? कोशिश करो sudo /etc/init.d/docker statusया sudo service docker statusयह परीक्षण करने के लिए।
ADDB

हम्म, मुझे नहीं लगता कि स्नैप होने के कारण वे काम करते हैं: paste.ubuntu.com/25219172 जो कहा, ps cax | grep dockerdवह देता है 31034 ? Ssl 0:05 dockerd
विंसेंट

6

मुझे लगता है, आपका उपयोगकर्ता नाम पहले से ही docker group में है। इसे जांचने के लिए, कमांड के नीचे जारी करें।

id -nG

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

sudo groupadd docker
sudo usermod -aG docker $USER

जब आप कमांड निष्पादित करते हैं, sudo systemctl start dockerतो यह डॉकटर प्रक्रिया बनाता है। उस डॉकटर प्रक्रिया में dockerdडेमन थ्रेड होता है। कमांड डिफॉल्ट docker.sockयूनिक्स सॉकेट भी बनाती है । docker.sockसॉकेट लगातार द्वारा सुनी है dockerdडेमॉन धागा। इससे आप docker.pidप्रक्रिया के साथ कर्नेल-स्तरीय IPC कर सकते हैं । इस डॉक सॉकेट का उपयोग करने में सक्षम होने के लिए, आपको प्रक्रिया स्तर ( docker.pid) और फ़ाइल स्तर ( docker.sock) से उचित अनुमति लेनी होगी । इसलिए, दो कमांड के नीचे निष्पादित करने से आपकी समस्या का समाधान होना चाहिए। sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid


केवल ubuntu 18.04 के लिए यह काम कर रहा है। बहुत बहुत धन्यवाद उद्धव गौतम
सब्बीर

3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

पुनरारंभ की आवश्यकता नहीं है और अधिक सुरक्षित है


1

आपको उपयोगकर्ता को डॉकर समूह में जोड़ना चाहिए ( आधिकारिक डॉक्स देखें )।

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

sudo usermod -aG docker <USER>

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


चूंकि उस लिंक पर मौजूद सामग्री गायब हो सकती है, कृपया संबंधित विवरण यहां जोड़ें।
चाई टी। रेक्स

कोई ज़रूरत नहीं है, दूसरे उत्तर में पहले से ही उपयोगकर्ता को समूह में जोड़ने का उल्लेख किया गया है - यह मदद नहीं करता था। (इसके अलावा, कोई कारण नहीं कि जो स्नैप इंस्टॉल के लिए मदद करेगा लेकिन नियमित इंस्टॉल के लिए नहीं।)
विंसेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.