अच्छी खबर: नया डॉकर (संस्करण 19.03 (वर्तमान में प्रयोगात्मक)) रूट उपयोगकर्ता का उपयोग करके होने वाली समस्याओं को नकारते हुए रूटलेस चलाने में सक्षम होगा । उन्नत अनुमतियों, रूट और कुछ भी जो आपकी मशीन को खोल सकता है जब आप नहीं चाहते थे, के साथ कोई और गड़बड़ नहीं ।
इस बारे में वीडियो से [डॉकरकॉन 2019] रूटलेस मोड के साथ हार्डनिंग डॉकर डेमन
रूटलेस डॉकर मोड के लिए कुछ चेतावनी
डॉकर इंजीनियरों का कहना है कि रूटलेस मोड को डॉकर इंजन सुविधाओं के पूर्ण सूट के लिए प्रतिस्थापन नहीं माना जा सकता है । रूटलेस मोड में कुछ सीमाओं में शामिल हैं:
- सीग्रुप संसाधन नियंत्रण, एपर्मर सुरक्षा प्रोफाइल, चेकपॉइंट/रिस्टोर, ओवरले नेटवर्क आदि । रूटलेस मोड पर काम न करें ।
- कंटेनरों से बंदरगाहों को उजागर करने के लिए वर्तमान में मैनुअल सोकैट हेल्पर प्रक्रिया की आवश्यकता होती है ।
- केवल उबंटू-आधारित डिस्ट्रोस रूटलेस मोड में ओवरले फाइल सिस्टम का समर्थन करते हैं ।
- रूटलेस मोड वर्तमान में केवल रात के निर्माण के लिए प्रदान किया गया है जो शायद उतना स्थिर न हो जितना आप अभ्यस्त हैं ।
डॉकर 19.3 के रूप में यह अप्रचलित है (और आवश्यकता से अधिक खतरनाक है):
द डॉकर मैनुअल क्या इसके बारे में यह कहना है:
गैर-रूट पहुंच देना
डॉकर डेमॉन हमेशा रूट उपयोगकर्ता के रूप में चलता है, और डॉकर संस्करण 0.5.2 के बाद से, डॉकर डेमॉन टीसीपी पोर्ट के बजाय यूनिक्स सॉकेट से बांधता है । डिफ़ॉल्ट रूप से यूनिक्स सॉकेट उपयोगकर्ता रूट के स्वामित्व में है, और इसलिए, डिफ़ॉल्ट रूप से, आप इसे सूडो के साथ एक्सेस कर सकते हैं ।
संस्करण 0.5.3 में शुरू, यदि आप (या आपका डॉकर इंस्टॉलर) डॉकर नामक एक यूनिक्स समूह बनाते हैं और इसमें उपयोगकर्ताओं को जोड़ते हैं, तो डॉकर डेमॉन शुरू होने पर डॉकर समूह द्वारा यूनिक्स सॉकेट के स्वामित्व को पढ़ने/लिखने योग्य बना देगा । डॉकर डेमॉन को हमेशा रूट उपयोगकर्ता के रूप में चलाना चाहिए, लेकिन यदि आप डॉकर क्लाइंट को डॉकर समूह में उपयोगकर्ता के रूप में चलाते हैं तो आपको सभी क्लाइंट कमांड में सुडो जोड़ने की आवश्यकता नहीं है । 0.9.0 तक, आप यह निर्दिष्ट कर सकते हैं कि डॉकर के अलावा किसी अन्य समूह को-जी विकल्प के साथ यूनिक्स सॉकेट का मालिक होना चाहिए ।
चेतावनी: डॉकर समूह (या-जी के साथ निर्दिष्ट समूह) रूट-समतुल्य है; ले देख डॉकर डेमन अटैक सरफेस डिटेल्स और इस blogpost पर हम गैर-रूट उपयोगकर्ताओं को सेंटोस, फेडोरा, या आरएचईएल में डॉकर चलाने क्यों नहीं देते हैं (धन्यवाद माइकल-n).
की हालिया रिलीज में प्रयोगात्मक बिना जड़ मोड GitHub पर, इंजीनियरों ने रूटलेस मोड का उल्लेख किया है कि उपयोगकर्ता_नामस्पेस(7), माउंट_नामस्पेस(7), नेटवर्क_नामस्पेस(7) का उपयोग करके डॉकरड को एक अप्रशिक्षित उपयोगकर्ता के रूप में चलाने की अनुमति देता है ।
उपयोगकर्ताओं को चलाने की जरूरत है dockerd-rootless.sh डॉकरड के बजाय ।
$ dockerd-rootless.sh --experimental
चूंकि रूटलेस मोड प्रायोगिक है, इसलिए उपयोगकर्ताओं को हमेशा चलाने की आवश्यकता होती है dockerd-rootless.sh साथ-प्रयोगात्मक।
पढ़ने के लिए महत्वपूर्ण: लिनक्स के लिए पोस्ट-इंस्टॉलेशन चरण (यह भी लिंक करता है डॉकर डेमन अटैक सरफेस डिटेल्स).
डॉकर को गैर-रूट उपयोगकर्ता के रूप में प्रबंधित करें
डॉकर डेमॉन टीसीपी पोर्ट के बजाय यूनिक्स सॉकेट से बांधता है । डिफ़ॉल्ट रूप से यूनिक्स सॉकेट उपयोगकर्ता रूट के स्वामित्व में है और अन्य उपयोगकर्ता केवल सूडो का उपयोग करके इसे एक्सेस कर सकते हैं । डॉकर डेमॉन हमेशा रूट उपयोगकर्ता के रूप में चलता है ।
यदि आप डॉकर कमांड का उपयोग करते समय सुडो का उपयोग नहीं करना चाहते हैं, तो डॉकर नामक एक यूनिक्स समूह बनाएं और इसमें उपयोगकर्ताओं को जोड़ें । जब डॉकर डेमॉन शुरू होता है, तो यह डॉकर समूह द्वारा यूनिक्स सॉकेट को पढ़ने/लिखने योग्य बनाता है ।
-
डॉकर समूह जोड़ें यदि यह पहले से मौजूद नहीं है:
sudo groupadd docker
-
जुड़े उपयोगकर्ता और उद्धरण जोड़ें;$उपयोगकर्ता और उद्धरण; डॉकर समूह में । यदि आप अपने वर्तमान उपयोगकर्ता का उपयोग नहीं करना चाहते हैं तो अपने पसंदीदा उपयोगकर्ता से मिलान करने के लिए उपयोगकर्ता नाम बदलें:
sudo gpasswd -a $USER docker
या तो एक करो newgrp docker
या समूहों में परिवर्तन को सक्रिय करने के लिए लॉग आउट/इन करें ।
-
आप उपयोग कर सकते हैं
docker run hello-world
यह जांचने के लिए कि क्या आप सूडो के बिना डॉकर चला सकते हैं ।