सवाल अल्पाइन-आधारित डॉकर में घुड़सवार वॉल्यूम के लिए अनुमतियों को प्रबंधित करने के लिए एक अनुवादात्मक तरीका क्या है?


जब आप कोई छवि बनाते हैं तो आप स्वामित्व असाइन कर सकते हैं (chown) और अनुमतियों को बदलें (chmod) छवि के भीतर पथ के। हालांकि, जब किसी वॉल्यूम या किसी अन्य कंटेनर से वॉल्यूम को घुमाया जाता है तो उस वॉल्यूम के लिए अनुमतियां मौजूद होती हैं, संभावित रूप से उस कंटेनर के लिए अज्ञात उपयोगकर्ता / समूह को शुरू करना जो इसे घुमाया जाता है।

मुझे मेजबान घुड़सवार और कंटेनर घुड़सवार वॉल्यूम्स के लिए अल्पाइन डॉकर छवि के तहत उपयोगकर्ताओं के लिए अनुमतियों को संभालने के लिए एक अनुवादात्मक विधि (यदि कोई मौजूद है) में रूचि है।

दो संभावित विकल्प जिन्हें मैं सोच सकता हूं वे हैं:

  1. कंटेनरों और घुड़सवार वॉल्यूम के बीच एक ही उपयोगकर्ता और समूह का प्रयोग करें।
  2. अनुमतियों को नियंत्रित करने के लिए एसीएल का प्रयोग करें।

क्या आरोहित वॉल्यूम्स के लिए अनुमति समस्याओं को हल करने के लिए कोई अनुशंसित दृष्टिकोण है, खासकर जब मालिकों का यूआईडी / ग्रिड किसी कंटेनर के अंदर उपयोगकर्ताओं / समूहों के साथ मेल नहीं खाता है? जैसे

मेरे अल्पाइन डॉकर छवि के भीतर मेरी www-data उपयोगकर्ता के पास 82 का यूआईडी / ग्रिड है (देखें: nginx www-data उपयोगकर्ता आईडी), अगर मैं किसी अन्य कंटेनर या मेजबान से वॉल्यूम माउंट करता हूं जहां यूआईडी वाला उपयोगकर्ता होता है 1001 और ग्रिड 1001 वॉल्यूम का मालिक है, मैं स्वामित्व और अनुमतियों में असमानता से कैसे निपटूं?


ध्यान दें: कुछ आवेदन ढांचे (उदा। Symfony) कुछ ऐसा उपयोग करने की सलाह देते हैं setfacl [1] अनुमतियों का प्रबंधन करने के लिए, लेकिन यह एयूएफएस के साथ अल्पाइन डॉकर छवि के तहत संभव नहीं प्रतीत होता है क्योंकि ऑपरेशन "समर्थित नहीं है"।

एसीएल का उपयोग डॉकर में एंटी-पैटर्न का उपयोग कर रहा है?


3
2018-03-29 03:02


मूल




जवाब:


ध्यान दें:  स्टैक ओवरफ़्लो निम्नलिखित प्रश्न हैं: डॉकर साझा वॉल्यूम के लिए अनुमतियों को प्रबंधित करने का सबसे अच्छा तरीका क्या है? जो उपरोक्त और कई उत्तरों के समान है, प्रचलित उत्तर यह है एक

प्रयोगात्मक उत्तर या सामान्य पैटर्न की तलाश में कई स्रोतों का प्रयोग और पढ़ने से मैंने निम्नलिखित की पहचान की है:

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

अनुमतियां और स्वामित्व असाइन करना। जिस मुद्दे पर मैंने ऊपर उल्लेख किया है (साथ setfacl काम नहीं कर रहा है) ऐसा लगता है कि उपयोगकर्ता समस्या है। मैं इसे गैर-रूट उपयोगकर्ता की अनुमति के तहत या उस निर्देशिका के विरुद्ध चलाने की कोशिश कर रहा था जिस पर मेरे उपयोगकर्ता का स्वामित्व नहीं था। स्वामित्व के मुद्दों को पाने के लिए आप एक का उपयोग कर सकते हैं docker-entrypoint.sh स्क्रिप्ट जो या तो होगी chown या setfacl छवि के लिए उपयोगकर्ता के रूप में कमांड निष्पादित करने से पहले रूट उपयोगकर्ता के रूप में। अभी तक मैंने स्वामित्व और अनुमति मुद्दों को संभालने के लिए दो व्यवहार्य विकल्पों की पहचान की है:

  • उपयोग sudo स्वामित्व बदलने या एक्सेस नियंत्रण सूचियों को सेट करने के लिए।
  • अपने कंटेनर को चलाने के लिए चलाने की अनुमति दें root उपयोगकर्ता और फिर कमांड को निष्पादित करने के लिए दूसरे उपयोगकर्ता को नीचे ले जाएं Gosu या सु-कार्यकारी

मैंने उपरोक्त दो अवलोकनों को अपने स्वयं के अनुवांशिक दृष्टिकोण के लिए संयोजित करने के लिए लिया, इसलिए ...

  1. जब भी एक डॉकर कंटेनर में होस्ट वॉल्यूम बढ़ता है जो भी साझा करता है docker.sock मेजबान के साथ, यह सलाह दी जाती है कि निर्देशिका मेल खाना चाहिए। उदाहरण के लिए, यदि डॉकरफ़ाइल में वॉल्यूम माउंट घोषित किया गया है /var/data फिर माउंट करें /var/data मेजबान से (उदा। -v /var/data:/var/data)। यह विशेष रूप से यदि आपके पास फाइलें या निर्देशिकाएं हैं /var/data कि आप एक नए कंटेनर में कंटेनर के भीतर से माउंट करना चाहते हैं।
  2. अनुमतियों के बारे में सक्रिय रहें, हमेशा एक शामिल करें docker-entrypoint.sh फाइल जो कम से कम एक माउंट निर्देशिका के लिए स्वामित्व या अभिगम नियंत्रण अद्यतन करता है।

2
2018-04-04 13:46