2016-07-10 12 views
6

मैं डोकर अवधारणाओं को समझने के लिए कोशिश कर रहा हूँ, लेकिन एक बात मैं नहीं पकड़ सकते:डोकर: आधार छवि

मैं छवि को समझने के रूप में (फलस्वरूप - एक कंटेनर) जैसे Ubuntu, CentOS और के रूप में विभिन्न लिनक्स distributives, से instantiated किया जा सकता है अन्य शामिल हैं।

के होस्ट मशीन पर कहते हैं कि मैं मानक Ubuntu 14.04 चलाते हैं,

  • अगर मैं कंटेनर है कि एक ही वितरण से instantiated नहीं है का उपयोग करें तो क्या होगा?
      नहीं
    • 14.04?
    • उबंटू (या कोई अन्य डेबियन-आधारित) नहीं है?
    • आपके द्वारा उपयोग की जाने वाली छवियों के विभिन्न आधार-छवियों का उपयोग करने के क्या नुकसान हैं? (मान लीजिए कि मैं छवि ए का उपयोग करता हूं जो उबंटू को मूल छवि के रूप में उपयोग करता है, छवि बी जिसने डेबियन को मूल छवि और छवि सी के रूप में उपयोग किया जो सेंट छवि के रूप में सेंटोस का उपयोग करता है)?

बोनस प्रश्न: मैं कैसे करता है, तो डेवलपर एक डोकर हब विवरण में निर्दिष्ट नहीं किया क्या आधार छवि एक छवि के लिए इस्तेमाल किया बता सकते हैं?

अग्रिम धन्यवाद!

उत्तर

6

डोकर नहीं उपयोग LXC (नहीं since Docker 0.9), लेकिन libcontainer (अब runc), बिल्ट-इन निष्पादन ड्राइवर जो नामस्थान, नियंत्रण समूह, क्षमताओं, AppArmor प्रोफाइल, नेटवर्क इंटरफेस और firewalling नियम manipulates करता है एक सतत और अनुमानित तरीका, और एलएक्ससी या किसी अन्य उपयोगकर्तालैंड पैकेज के आधार पर।

एक डॉकर छवि फाइलों के एक सेट का प्रतिनिधित्व करती है Winch मेजबान कर्नेल तक पहुंचते समय, अपनी मेमोरी और डिस्क और उपयोगकर्ता स्थान में एक कंटेनर के रूप में चलाएगा।
यह एक वीएम से अलग है, जो होस्ट कर्नेल तक नहीं पहुंचता है, लेकिन इसके hypervisor के माध्यम से अपना हार्डवेयर/सॉफ़्टवेयर स्टैक शामिल करता है।
एक कंटेनर में मेजबान में सीमा (डिस्क, मेमोरी, सीपीयू) सेट करना है। एक वास्तविक वीएम को एक नया नया होस्ट बनाना है।

डोकर छवि (फ़ाइलों के समूह) कुछ भी है, जब तक जा सकता है कि:

  • यह मेजबान लाइब्रेरी पर निर्भर करती नहीं है (क्योंकि यह अपने आप ही डिस्क स्थान में अलग है, यह करने के लिए पहुँच नहीं है मेजबान फ़ाइलें, unless volumes are mounted)
  • यह है केवल प्रणाली कॉल: देखें "What is meant by shared kernel in Docker?"

इसका मतलब है कि एक छवि कुछ भी जा सकता है: एक और linux distro, या यहाँ तक कि एक एकल निष्पादन योग्य फ़ाइल। उदाहरण के लिए जाने (https://golang.org/) में किसी भी निष्पादन योग्य संकलन, किसी भी linux distro के बिना अपने स्वयं के डोकर छवि में पैक किया जा सकता है:

FROM scratch 
COPY my_go_exe/
ENTRYPOINT /my_go_exe 

scratch "खाली" छवि है, और एक जाना निष्पादन स्थिर जुड़ा हुआ है, तो यह है स्वयं निहित और केवल कर्नेल को सिस्टम कॉल पर निर्भर करता है।

+0

उत्तर के लिए धन्यवाद, अब यह बहुत स्पष्ट है! तो लोग क्यों कहते रहते हैं कि आपकी सभी छवियों को उसी आधार छवि से तुरंत चालू करना अच्छा विचार है? क्रिस पिटमैन ने इस धागे में काफी उचित उत्तर दिया, क्या आप क्या कहते हैं उससे सहमत हैं? – SmxCde

+1

@SmxCde जब तक आपका कर्नेल "हाल ही में पर्याप्त" (3.14 या अधिक) है, मूल छवि को कोई फर्क नहीं पड़ता। उसी आधार छवि से शुरू करने से मेजबान पर '/ var/lib/docker/images' में बहुत अधिक जगह नहीं लेने में मदद मिलेगी, लेकिन इसके अलावा, आप जितनी चाहें उतनी बेस छवि का उपयोग कर सकते हैं। (सुरक्षा के बारे में क्रिस 'चेतावनी के साथ) – VonC

1

डोकर LXC है, जो एक भी लिनक्स कर्नेल का उपयोग कर एक नियंत्रण मेजबान पर कई अलग Linux सिस्टम (कंटेनर) को चलाने के लिए एक ऑपरेटिंग-सिस्टम स्तर वर्चुअलाइजेशन विधि है उपयोग करता है।

आप अपने मशीन है, जहां आप एक और लिनक्स distro है, जो अपने मेजबान ओएस के रूप में ही नहीं है शुरू पर एक वी एम को यह तुलना कर सकते हैं। इसलिए इससे कोई फर्क नहीं पड़ता, अगर आपका होस्ट ओएस आपके कंटेनर की मूल छवि जैसा ही है।

डोकर में, कंटेनर परतों से बनाया गया है। आपके डॉकरफाइल में प्रत्येक चरण (कमांड) एक परत का प्रतिनिधित्व करता है, जिसे एक दूसरे के बाद लागू किया जाता है। पहला चरण आधार ओएस परत लागू करने के लिए है, जो FROM द्वारा इंगित किया गया है।

तो अपने बोनस प्रश्न का उत्तर देने के लिए, आप जिस कंटेनर का उपयोग कर रहे हैं उसके Dockerfile के अंदर एक नज़र डालें (यह डॉकरहब पर तीसरा टैब है) और पहले कथन में देखें, जो मूल छवि (ओएस) है।

+0

उत्तर के लिए धन्यवाद! लेकिन अब तक आप जो कह रहे हैं वह मेरे लिए थोड़ा उलझन में है। चूंकि मैंने डॉकर के बारे में जानना शुरू कर दिया है, इसलिए मुझे लगता है कि वे खुद को ऐसे सॉफ़्टवेयर के रूप में स्थापित करते हैं जो वीएम नहीं है, उदाहरण के लिए इस तस्वीर पर एक नज़र डालें: http://i.imgur.com/MJHfm1c.jpg और आप कह रहे हैं कि यह है ओएस स्तर पर कुछ प्रकार के वीएम, या इसके समान। मैं समझता हूं कि मेरा प्रश्न मूर्खतापूर्ण हो सकता है लेकिन मैं एक ओप या किसी भी प्रकार का लिनक्स लड़का नहीं चाहता हूं;) – SmxCde

+0

शायद यह मेरे लिए अधिक स्पष्ट होगा यदि आप वास्तविक वीएम और एलएक्ससी के साथ डॉकर के बीच अंतर को समझा सकते हैं , या ए का उपयोग करने के फायदे) मेजबान मशीन पर समान वितरक बी) मेरे सभी डॉकर कंटेनरों के लिए समान आधार छवि, जैसा कि मुझे लगता है कि यह अनुशंसित है ... धन्यवाद! – SmxCde

4

मुख्य बात मेजबान ओएस और डोकर कंटेनर के बीच साझा गिरी है। विभिन्न वितरण/संस्करणों से चलने वाले डॉकर कंटेनर का मुख्य जोखिम यह है कि वे मेजबान सिस्टम पर मौजूद कर्नेल कार्यक्षमता पर निर्भर नहीं हो सकते हैं, उदाहरण के लिए यदि कंटेनर मेजबान की तुलना में एक नए कर्नेल की अपेक्षा करता है।

सिद्धांत रूप में, लिनक्स कर्नेल पिछड़ा संगत है। जब तक मेजबान कर्नेल कंटेनर कर्नेल से नया होता है तब तक कार्य होना चाहिए।

एक संचालन दृष्टिकोण से

, हर बार जब आप एक अलग आधार छवि एक और निर्भरता है कि आप अद्यतन और सुरक्षा के मुद्दों के लिए निगरानी करने की जरूरत है कि के आधार पर शुरू करते हैं। एक वितरण पर मानकीकरण करने से आपकी ओप टीम के लिए वर्कलोड कम हो जाता है जब अगली बड़ी भेद्यता की खोज की जाती है।सभी -

+0

सही समझ में आता है, धन्यवाद! – SmxCde

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