2015-10-08 16 views
7

मैंने कर्नेल मॉड्यूल, xfsprogs स्थापित करने का प्रयास किया। यह एक कंटेनर के अंदर सफलतापूर्वक स्थापित किया गया था। यह वास्तव में आश्चर्यजनक है, लेकिन lsmod इस मॉड्यूल को कंटेनर के अंदर या होस्ट सिस्टम में सूचीबद्ध नहीं करता है। कैसे एक नया कर्नेल मॉड्यूल एक कंटेनर में लोड? (CentOS कंटेनर, Ubuntu मेजबान)डॉकर लोडिंग कर्नेल मॉड्यूल

+0

'xfsprogs' एक ** पैकेज ** है, उपयोगकर्ता-स्थान ** पुस्तकालय ** प्रदान किया गया है। 'lsmod' ** कर्नेल मॉड्यूल ** दिखाता है, वर्तमान में कर्नेल में लोड किया गया है। – Tsyvarev

+0

लेकिन फिर 'xfs' fs के लिए आवश्यक मॉड्यूल क्या है। "समर्थन"? –

+1

सिस्टम को 'xfs' के साथ स्वरूपित फाइल सिस्टम को माउंट करने में सक्षम बनाने के लिए, आपको xfs मॉड्यूल सक्षम (कॉन्फ़िगरेशन फ़ाइल में) के साथ कर्नेल बनाना होगा। यदि 'sudo modprobe xfs' (होस्ट मशीन पर चल रहा है) रिपोर्ट त्रुटि है कि मॉड्यूल नहीं मिला है, तो आपके कर्नेल को xfs फाइल सिस्टम के लिए कोई समर्थन नहीं है। – Tsyvarev

उत्तर

7

कंटेनर सिस्टम कॉल के माध्यम से गिरी के साथ बातचीत और कर्नेल या कंटेनर के अंदर गिरी मॉड्यूल के किसी भी हिस्से शामिल नहीं हैं कर सकते हैं। यह कारणों में से एक है कि क्यों कंटेनर हल्के वजन और पोर्टेबल होने के लिए डिजाइन किए गए हैं। इसके अलावा xfsprogs उपयोगकर्ता स्पेस प्रोग्राम्स हैं और कर्नेल मॉड्यूल नहीं हैं।

कैसे एक नया कर्नेल मॉड्यूल एक कंटेनर में लोड? (CentOS कंटेनर, उबंटू मेजबान)

मॉड्यूल अपने मेजबान ओएस पर लोड करने की आवश्यकता है, और डोकर कंटेनर से नहीं कर सकते।

7
  • भागो विशेषाधिकार प्राप्त मोड में कंटेनर (--privileged)
  • सभी क्षमताओं जोड़ें (--टोपी जोड़ने के सभी =)
  • माउंट मेजबान/lib/कंटेनर (-v/lib में मॉड्यूल/मॉड्यूल:/lib/मॉड्यूल)

docker run --name container_name --privileged --cap-add=ALL -d -v /dev:/dev -v /lib/modules:/lib/modules image_id

यहाँ सब linux क्षमताओं जोड़ा जाता है जिससे क्षमताओं परिष्कृत किया जा सकता।

+1

जब आप डॉकर की खिड़कियां या मैकॉक्स संस्करण चला रहे हों तो क्या उपयोग किया जाना चाहिए? मोबी लिनक्स कर्नेल मॉड्यूल कहां हैं? – user725408

+0

विंडोज़ के लिए डॉकर टूलबॉक्स में, जो इसके नीचे boot2docker linux होस्ट चलाता है, आप इसमें एसएसएच कर सकते हैं और/lib/मॉड्यूल के तहत मॉड्यूल देख सकते हैं –

1

Falco एक कंटेनर का एक उदाहरण है जो इसकी प्रारंभ प्रक्रिया के हिस्से के रूप में कर्नेल मॉड्यूल लोड करता है।

docker run -i -t --name falco --privileged \ 
    -v /var/run/docker.sock:/host/var/run/docker.sock \ 
    -v /dev:/host/dev \ 
    -v /proc:/host/proc:ro \ 
    -v /boot:/host/boot:ro \ 
    -v /lib/modules:/host/lib/modules:ro \ 
    -v /usr:/host/usr:ro \ 
    sysdig/falco 
संबंधित मुद्दे