2016-04-11 18 views
7

मेरे पास यह कंटेनर debian:jessie पर आधारित है (लेकिन यह बहुत प्रासंगिक नहीं है क्योंकि मेरे पास alpine:3.3 के साथ एक ही समस्या थी)। मैं बिंदु जहां मैंमैं डॉकर कंटेनर के अंदर कैसे घुमा सकता हूं?

mount --bind /htdocs/www /home/user/example.com/www 

की जरूरत के लिए मिलता है और मैं

mount: permission denied 

मिल मैं किसी भी गिरी लॉग में कुछ भी नहीं मिल सकता है, और -vvv दिलचस्प कुछ भी नहीं अर्जित करता है। मैं स्पष्ट रूप से मेजबान (उपट्री/नोड की किसी अन्य जोड़ी के साथ) पर ऐसा कर सकता हूं। ऊपर दिए गए मेरे उदाहरण में/htdocs/www एक डॉकर वॉल्यूम का माउंट पॉइंट है, लेकिन यह किसी भी महत्व की तरह दिखाई नहीं देता है, क्योंकि मैं mount --bind कंटेनर के अंदर उपट्री/नोड की कोई भी जोड़ी नहीं कर सकता।

+2

क्या कंटेनर के अंदर से माउंट करने का कोई कारण है? कंटेनर को '-v /home/user/example.com/www:/htdocs/www' के साथ चलाना एक बेहतर समाधान हो सकता है, क्योंकि यह कंटेनर के पारदर्शी है जहां से ये फ़ाइलें आईं, और इसमें कंटेनर देने की आवश्यकता नहीं है अतिरिक्त विशेषाधिकार – thaJeztah

+0

अच्छा बिंदु। हालांकि, यह हर बार कंटेनर को फिर से बनाने के लिए मजबूर करता है जब भी मैं एक मौजूदा उपयोगकर्ता को एक नया उपयोगकर्ता और/या दूसरी साइट जोड़ना चाहता हूं। मैं इसे किसी भी कंटेनर पर इसे बाधित किए बिना करने में सक्षम होना चाहता हूं। – Morpheu5

+0

आपको एक कंटेनर में एकाधिक साइटों को नहीं रखना चाहिए; एक कंटेनर कताई लगभग 300 मिलीसेकंड लेता है। एक कंटेनर में केवल एक ही साइट होने के कारण, यह बहुत साफ करने वाला बनाता है; आपके पास केवल साइट के लिए आवश्यक है, और (उदा।) आपको संभावित रूप से विरोधाभासी (साइट-ए, साइट-बी) – thaJeztah

उत्तर

12

mount सिस्टम कॉल का उपयोग करने के लिए, आपको CAP_SYS_ADMIN क्षमता की आवश्यकता है। डिफ़ॉल्ट रूप से, डॉकर एक कंटेनर को उत्पन्न करते समय सभी क्षमताओं को छोड़ देता है (जिसका अर्थ है कि रूट, आपको सबकुछ करने की अनुमति नहीं है)। अधिक जानकारी के लिए mount(2) man page देखें। सावधानी साथ

[email protected] > docker run --rm -it --cap-add=SYS_ADMIN debian:jessie 
[email protected]:/# mkdir /mnt/test 
[email protected]:/# mount --bind /home /mnt/test/ 
[email protected]:/# 

इस का उपयोग करें:

आप अपने कंटेनर के लिए इस क्षमता जोड़ने के लिए --cap-add=SYS_ADMIN ध्वज के साथ अपने कंटेनर शुरू कर सकते हैं। एक विशेषाधिकृत कंटेनर में अविश्वसनीय सॉफ़्टवेयर न चलाएं।

+2

समझाए जाने के लिए धन्यवाद, मैं वादा करता हूं कि मैं बहुत सावधान रहूंगा :) धन्यवाद। – Morpheu5

संबंधित मुद्दे