मैंने अभी डॉकर का अध्ययन करना शुरू किया है और ऐसा कुछ है जो मेरे लिए काफी भ्रमित करने वाला है। जैसा कि मैंने डॉकर की वेबसाइट पर पढ़ा है कि एक कंटेनर वर्चुअल मशीन से अलग है। जैसा कि मैंने समझा कि एक कंटेनर सिर्फ एक सैंडबॉक्स है जिसके अंदर एक पूरी तरह से पृथक फ़ाइल सिस्टम चलाया जाता है।
मैंने यह भी पढ़ा है कि एक कंटेनर में अतिथि ओएस स्थापित नहीं है। इसके बजाय यह अंतर्निहित OS कर्नेल पर निर्भर करता है।
वह सब ठीक है। मैं जो उलझन में हूं वह यह है कि ऑपरेटिंग सिस्टम के नाम पर डॉकर इमेज हैं। हम उबंटू, डेबियन, फेडोरा, सेंटोस और इतने पर जैसे चित्र देखते हैं।
मेरी बात यह है: वे चित्र क्या हैं, वास्तव में? वर्चुअल मशीन बनाने और डेबियन स्थापित करने की तुलना में डेबियन छवि के आधार पर कंटेनर बनाना अलग कैसे है?
मुझे लगा कि कंटेनर में कोई अतिथि ओएस स्थापित नहीं था, लेकिन जब हम चित्र बनाते हैं तो हम उन्हें एक ओएस के नाम पर कुछ छवि के आधार पर बनाते हैं।
इसके अलावा, उदाहरणों में मैंने देखा कि जब हम करते हैं docker run ubuntu echo "hello world"
, तो ऐसा लगता है कि हम एक वीएम को उबंटू के साथ स्पिन कर रहे हैं और इसे कमांड चलाते हैं echo "hello world"
।
उसी तरह जब हम करते हैं docker run -it ubuntu /bin/bash
, तो ऐसा लगता है कि हम उबंटू के साथ एक वीएम को स्पिन कर रहे हैं और कमांड लाइन का उपयोग करके इसे एक्सेस कर रहे हैं।
वैसे भी, उन छवियों को ऑपरेटिंग सिस्टम के नाम के बारे में क्या कहा जाता है? उन छवियों में से एक के साथ एक कंटेनर को चलाने के लिए और इसी अतिथि ओएस के साथ एक वीएम को स्पिन करना कितना अलग है?
क्या यह विचार है कि हम सिर्फ होस्ट ओएस के साथ कर्नेल साझा करते हैं (और परिणामस्वरूप हमारे पास हार्डवेयर को वर्चुअलाइज करने की आवश्यकता के बिना अंतर्निहित मशीन हार्डवेयर संसाधनों तक पहुंच है), लेकिन फिर भी कंटेनरों पर प्रत्येक अलग-अलग सिस्टम की फ़ाइलों और बायनेरी का उपयोग करें। समर्थन के लिए जो भी आवेदन हम चलाना चाहते हैं?