डॉकर और पायथन virtualenv के बीच अंतर क्या है?


90

डॉकर के बारे में मुझे जो समझ में आया है, वह आभासी वातावरण के लिए इस्तेमाल किया जाने वाला एक उपकरण है। उनके लिंगो में, इसे "कंटेनरीकरण" कहा जाता है। यह कमोबेश पाइथन के वर्चुअन को दर्शाता है। हालाँकि, आप डोकर में virtualenv का उपयोग कर सकते हैं । तो, क्या यह एक आभासी वातावरण के अंदर एक आभासी वातावरण है? मैं उलझन में हूँ कि यह कैसे काम करेगा, तो क्या कोई स्पष्ट कर सकता है?


23
यह एक अच्छा सवाल है, लेकिन ऑफ-टॉपिक के रूप में बंद होने की संभावना है। वर्चुअनव एक वास्तविक अलगाव नहीं है, यह पथ हैक और सिमिलिंक का उपयोग करके एक गरीब आदमी का अलगाव है - आप अभी भी अपने ऑपरेटिंग सिस्टम के भीतर हैं। डॉकर अधिक अलगाव प्रदान करता है, लेकिन एक पूर्ण-आभासी मशीन जितना नहीं। आप एक वर्चुअलबॉक्स (भारी, महंगा) और एक virtualenv (हल्का, सस्ता) के बीच के मध्य के रूप में एक कंटेनर के बारे में सोच सकते हैं। एक कंटेनर के अंदर एक वर्चुअन बनाना बहुत मायने नहीं रखता है क्योंकि अलगाव पहले से ही डॉकटर द्वारा प्रदान किया जाता है, ऐसा करने में बहुत अधिक बिंदु नहीं होगा।
विम

जवाबों:


102

एक virtualenv केवल पायथन निर्भरता को एनकैप्सुलेट करता है। एक डॉकर कंटेनर पूरे ओएस को एनकैप्सुलेट करता है ।

पायथन virtualenv के साथ, आप आसानी से पायथन संस्करणों और निर्भरता के बीच स्विच कर सकते हैं, लेकिन आप अपने होस्ट ओएस के साथ फंस गए हैं।

डॉकर छवि के साथ, आप पूरे ओएस को स्वैप कर सकते हैं - उबंटू, डेबियन, अल्पाइन, यहां तक ​​कि विंडोज सर्वर कोर पर पायथन को स्थापित और चला सकते हैं।

वहाँ डॉकर चित्र हैं OS और पायथन संस्करणों के हर संयोजन के साथ जिसे आप सोच सकते हैं, डॉकर स्थापित के साथ किसी भी सिस्टम पर नीचे खींचने और उपयोग करने के लिए तैयार हैं।


इसके अतिरिक्त , Google की 'कई लोकप्रिय प्रोग्रामिंग भाषाओं' (पायथन सहित) के लिए अनियंत्रित चित्र हैं जिनमें 'केवल प्रोग्रामिंग भाषा रनटाइम शामिल है' - ArchWiki / Docker
muthuh

25

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


क्या डॉकटर कंटेनर के अंदर एक आभासी वातावरण बनाने में कोई लाभ है यह मानते हुए कि कंटेनर केवल एक फ्लास्क वेब ऐप की सेवा देगा।
thanos.a

10

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


4
क्या यह प्रतिक्रिया समय (वर्चुअलाइजेशन के दो स्तर) को धीमा कर देगा?
एंड्रयू स्विफ्ट

3
अजगर आभासी वातावरण अजगर वातावरण को बदल देता है यह अजगर दुभाषिया के निष्पादन का वर्चुअलाइजेशन नहीं करता है। डॉकटर कंटेनर को तब तक वर्चुअलाइज नहीं किया जाता है जब तक कि उसे हाइपवाइजर (डॉकटर मशीन) से निष्पादित नहीं किया जाता है।
मोर्टन

मैं अभी भी और लगता है कि यह मेरे लिए एक ऑपरेटिंग सिस्टम के अंदर डोकर माउंट करने के लिए कठिन हो जाएगा, मैं आमतौर पर बाहरी pytohn को परियोजना के सभी निर्भरता एक खोल भाषा में मैं इस कार्यक्रम ऐसा करते हैं, मैं उन्हें स्वचालित रूप से निष्पादित, के ssh के माध्यम से उत्पादन में मान लीजिए
एलेक्स Ancco Cahuana
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.