2013-07-29 6 views
10

बदलता है तो डॉकर पोर्टेबल कंटेनर को कैसे अनुमति देता है यदि मेरा प्रोग्राम कर्नेल लाइब्रेरी के कुछ फ़ंक्शन पर निर्भर करता है, और उस कार्य में बदले में निर्भरता की श्रृंखला होती है, तो डॉकर छोटे स्नैपशॉट के बिना छोटे और पोर्टेबल कैसे रहता है कर्नेल पुस्तकालय (और लाइब्रेरी स्तर की बजाय फ़ंक्शन पर निर्भरता समस्याओं का प्रबंधन)? दूसरे शब्दों में यह कर्नेल पुस्तकालयों में एक संस्करण से अगले संस्करण में परिवर्तनों से खुद को कैसे अपनाना है, और क्या यह लाइब्रेरी या फ़ंक्शन ग्रैनलारिटी में ऐसा करता है?यदि कर्नेल लाइब्रेरी

इसके अलावा यदि मेरे एप्लिकेशन में सॉफ़्टवेयर स्टैक है तो उदाहरण के लिए कर्नेल लाइब्रेरी ए के भविष्य के संस्करण के साथ एक फ़ंक्शन संगत है जबकि कर्नेल लाइब्रेरी ए का उपयोग करने वाला दूसरा फ़ंक्शन अब संगत नहीं है। दूसरे शब्दों में:

समारोह 1 & 2 दोनों पर निर्भर करते हैं और कर्नेल लिब में कार्यों के साथ काम एक संस्करण लिब के साथ 1.0

समारोह 1 काम करता है एक संस्करण 1.1 समारोह लिब के साथ 2 टूट जाता है एक संस्करण 1.1 (अभी भी समारोह 2 लिब ए संस्करण 1.0 की आवश्यकता है)

मुझे डॉकर के बारे में बहुत कुछ नहीं पता है, इसलिए यह एक नौसिखिया सवाल है।

उत्तर

15

"कर्नेल लाइब्रेरी" जैसी कोई चीज़ नहीं है। तुम क्या वर्णन कर रहे हैं के लिए निकटतम चीजें हैं:

  • libc, जो कंटेनर छवि का हिस्सा है, और इसलिए नहीं बदलता है।

  • लिनक्स कर्नेल एबीआई, जो अधिकतर स्थिर है। हालांकि कुछ बदलाव कभी-कभी कर्नेल एबीआई को किए जाते हैं, यह संभवतः जितना संभव हो सके किया जाता है - कर्नेल डेवलपर्स पीछे की संगतता को बनाए रखने के लिए हर संभव प्रयास करते हैं। जहां परिवर्तन किए जाते हैं, यह अक्सर उन घटकों में होता है जो एक कंटेनर (उदाहरण के लिए, ऑडियो/वीडियो आउटपुट, गतिशील डिवाइस प्रबंधन इत्यादि) में चल रहे अनुप्रयोगों के लिए प्रासंगिक नहीं होंगे।

+0

libc और लिनक्स कर्नेल बहुत अधिक अंतर्निहित हैं जो कर्नेल आप चल रहे हैं उसे एक विशिष्ट libc के साथ संकलित किया गया था। आपके द्वारा लिखे गए libc को केवल एक विशिष्ट संस्करण के ऊपर कर्नेल का समर्थन करने के लिए संकलित किया गया था। यदि आप एक के बिना एक अपडेट करते हैं तो आप दर्द की दुनिया में रह सकते हैं। – Eloff

+2

मेरा मानना ​​है कि ओपी का मतलब कर्नेल के विभिन्न संस्करणों द्वारा समर्थित सिस्टम कॉल था। ये libc से अत्यधिक सहसंबंधित हैं। तो कंटेनरों को किसी भी तरह धोखा दें और बेस सिस्टम के libc का उपयोग करें? क्या आप कुछ समस्याग्रस्त हो सकते हैं यदि कुछ सॉफ़्टवेयर ने बेस कर्नेल में समर्थित सिस्कोल को सीधे आमंत्रित करने का प्रयास नहीं किया है? – Otheus