अच्छी खबर: नया डॉकटर (संस्करण 19.03 (वर्तमान में प्रायोगिक)) एक रूट उपयोगकर्ता का उपयोग करके आ सकने वाली समस्याओं को नकारने में सक्षम होगा। एलिवेटेड परमिशन, रूट और ऐसी कोई भी चीज़ नहीं जो आपके मशीन को खोल सकती है जब आप नहीं चाहते।
[DockerCon 2019] से इस बारे में वीडियो रूटलेस मोड के साथ डॉकिंग डेमन को हार्ड करना
जड़विहीन डॉकर मोड में कुछ कैविट्स
डॉकर इंजीनियरों का कहना है कि रूट रहित मोड को डॉकर इंजन सुविधाओं के पूर्ण सूट के लिए प्रतिस्थापन नहीं माना जा सकता है। रूटलेस मोड में कुछ सीमाएं शामिल हैं:
- cgroups संसाधन नियंत्रण, मूल्यांकक सुरक्षा प्रोफ़ाइल, चेकपॉइंट / पुनर्स्थापना, ओवरले नेटवर्क आदि रूटलेस मोड पर काम नहीं करते हैं।
- कंटेनरों से एक्सपोज़र पोर्ट्स को वर्तमान में मैनुअल सोसैट हेल्पर प्रक्रिया की आवश्यकता होती है।
- केवल उबंटू-आधारित डिस्ट्रोस रूटलेस मोड में ओवरले फाइल सिस्टम का समर्थन करते हैं।
- रूटलेस मोड वर्तमान में केवल रात के निर्माण के लिए प्रदान किया जाता है जो आपके लिए उपयोग किए जाने वाले स्थिर नहीं हो सकता है।
डॉक 19.3 के रूप में यह अप्रचलित है (और ज़रूरत से ज़्यादा खतरनाक है):
इस बारे में कहने के लिए docker मैनुअल में यह है:
गैर-रूट एक्सेस देना
Docker डेमन हमेशा रूट उपयोगकर्ता के रूप में चलता है, और Docker संस्करण 0.5.2 के बाद से, docker डेमन एक TCP पोर्ट के बजाय एक यूनिक्स सॉकेट से जुड़ जाता है। डिफ़ॉल्ट रूप से कि यूनिक्स सॉकेट उपयोगकर्ता रूट के स्वामित्व में है, और इसलिए, डिफ़ॉल्ट रूप से, आप इसे sudo के साथ एक्सेस कर सकते हैं।
संस्करण 0.5.3 में शुरू, यदि आप (या आपका डॉकटर इंस्टॉलर) एक यूनिक्स समूह बनाते हैं, जिसे डॉकर कहा जाता है और उपयोगकर्ताओं को इसमें जोड़ा जाता है, तो डॉक डेमॉन तब शुरू होता है जब यूनिक्स सॉकेट रीड / राइट के स्वामित्व को डैक समूह द्वारा शुरू कर देता है। । Docker daemon को हमेशा रूट उपयोगकर्ता के रूप में चलना चाहिए, लेकिन यदि आप docker समूह में उपयोगकर्ता के रूप में docker क्लाइंट चलाते हैं तो आपको सभी क्लाइंट कमांड में sudo जोड़ने की आवश्यकता नहीं है। 0.9.0 तक, आप यह निर्दिष्ट कर सकते हैं कि डॉक के अलावा अन्य समूह को -G विकल्प के साथ यूनिक्स सॉकेट का मालिक होना चाहिए।
चेतावनी: docker समूह (या -G के साथ निर्दिष्ट समूह) मूल-समतुल्य है; देख डोकर Daemon हमला भूतल विवरण और पर इस ब्लॉग पोस्ट क्यों हम न दें गैर-रूट उपयोगकर्ताओं CentOS, Fedora, या RHEL में डोकर चलाने (धन्यवाद माइकल-एन)।
GitHub पर प्रायोगिक रूटलेस मोड की हालिया रिलीज़ में , इंजीनियरों ने रूटलेस मोड का उल्लेख किया है जो उपयोगकर्ता_namespaces (7), mount_namespaces (7), network_namespaces (7) का उपयोग करके अनपेक्षित उपयोगकर्ता के रूप में डॉकर्ड चलाने की अनुमति देता है।
उपयोगकर्ताओं को dockerd के बजाय dockerd-rootless.sh चलाने की आवश्यकता है।
$ dockerd-rootless.sh --experimental
रूटलेस मोड प्रयोगात्मक होने के कारण, उपयोगकर्ताओं को हमेशा doexd-rootless.sh को –experimental के साथ चलाने की आवश्यकता होती है।
पढ़ने के लिए महत्वपूर्ण: लिनक्स के लिए स्थापना के बाद के चरण (यह डॉकर डेमन अटैक सरफेस विवरण से भी लिंक करता है )।
डॉकर को एक गैर-रूट उपयोगकर्ता के रूप में प्रबंधित करें
डोकर डेमॉन एक टीसीपी पोर्ट के बजाय एक यूनिक्स सॉकेट से बांधता है। डिफ़ॉल्ट रूप से कि यूनिक्स सॉकेट उपयोगकर्ता रूट के स्वामित्व में है और अन्य उपयोगकर्ता केवल sudo का उपयोग करके इसे एक्सेस कर सकते हैं। डोकर डेमॉन हमेशा रूट उपयोगकर्ता के रूप में चलता है।
यदि आप doo कमांड का उपयोग करते समय sudo का उपयोग नहीं करना चाहते हैं, तो doix नामक एक यूनिक्स समूह बनाएं और उसमें उपयोगकर्ताओं को जोड़ें। जब डॉकटर डेमॉन शुरू होता है, तो यह यूनिक्स सॉकेट के स्वामित्व को रीडर्स समूह द्वारा पढ़ा / लिखने योग्य बनाता है।
यदि यह पहले से मौजूद नहीं है तो docker समूह जोड़ें:
sudo groupadd docker
कनेक्टेड उपयोगकर्ता "$ USER" को डॉकटर समूह में जोड़ें। यदि आप अपने वर्तमान उपयोगकर्ता का उपयोग नहीं करना चाहते हैं तो अपने पसंदीदा उपयोगकर्ता से मिलान करने के लिए उपयोगकर्ता नाम बदलें:
sudo gpasswd -a $USER docker
newgrp docker
समूहों में परिवर्तन को सक्रिय करने के लिए या तो एक लॉग आउट करें या लॉग आउट करें।
आप उपयोग कर सकते हैं
docker run hello-world
जाँच करें कि क्या आप बिना sudo के docker चला सकते हैं।