सवाल क्या मुझे एक पृथक वातावरण बनाने के लिए वग्रेंट या डॉकर का उपयोग करना चाहिए? [बन्द है]


मैं विकास और तैनाती के लिए उबंटू का उपयोग करता हूं और एक अलग वातावरण बनाने की आवश्यकता है।

मैं इस उद्देश्य के लिए या तो वग्रेंट या डॉकर पर विचार कर रहा हूं। पेशेवर और विपक्ष क्या हैं, या ये समाधान कैसे तुलना करते हैं?


1888
2018-05-20 10:05


मूल


दोनों अब मिलनसार हैं: docs.vagrantup.com/v2/provisioning/docker.html - Alp
क्या हम इसे हटाएं नहीं, दोस्तों? शायद यह ऑफ-विषय है और हो सकता है बन्द है, लेकिन दोनों औजारों (और 9 0 के विचारों) के लेखकों के लंबे उत्तरों के साथ, यह मूल्यवान है और इसे हटाने के लायक नहीं है। - Jeremy
आपका प्रश्न दो लेखकों के दोनों लेखकों के उत्तर प्राप्त करने के लिए भाग्यशाली है: मिशेल और सोलोमन हाइक्स - itsazzad


जवाब:


यदि आपका उद्देश्य अलगाव है, तो मुझे लगता है कि डॉकर वह है जो आप चाहते हैं।

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

दूसरी तरफ डॉकर कर्नेल सीग्रुप और नेमस्पेसिंग का उपयोग करता है LXC। इसका मतलब है कि आप मेजबान और उसी फ़ाइल सिस्टम के समान कर्नेल का उपयोग कर रहे हैं। आप डॉकरफाइल का उपयोग कर सकते हैं docker build अपने कंटेनर के प्रावधान और विन्यास को संभालने के लिए आदेश। आपके पास एक उदाहरण है docs.docker.com अपने डॉकरफाइल को कैसे बनाएं; यह बहुत सहज है।

एकमात्र कारण आप वाग्रेंट का उपयोग करना चाहते हैं यदि आपको अपने उबंटू बॉक्स पर बीएसडी, विंडोज या अन्य गैर-लिनक्स विकास करने की आवश्यकता है। अन्यथा, डॉकर के लिए जाओ।


1044
2018-05-26 16:46



दुर्भायवश अभी तक नहीं। यदि आप 32 बिट सिस्टम में हैं, तो आपको डॉकर चलाने के लिए 64 बिट अतिथि सिस्टम के साथ एक वीएम की आवश्यकता होगी। हालांकि, go1.1 के साथ 32 बिट समर्थन बेहतर हो जाता है और यह संभव है कि डॉकर जल्द ही 32 बिट कमान का समर्थन करेगा - creack
"मैक, विंडोज़ और कुछ लिनक्स डिस्ट्रीब्यूशन इस समय डॉकर को मूल रूप से नहीं चला सकते हैं, इसलिए हम आपको उबंटू वर्चुअल मशीन सेट करने और उस के अंदर डॉकर चलाने में मदद करते हैं।" तो जब तक कि आप मुख्यधारा के लिनक्स डिस्ट्रो पर नहीं हैं, तो आपका ऐप डॉकर के अंदर चला जाएगा जो स्वयं वीएम के अंदर चलाएगा। - aleemb
यह मैक और विंडोज के लिए सच है, लेकिन डॉकर 0.7 के बाद से, कोई लिनक्स डिस्ट्रो ठीक काम करता है। यदि आप एक गैर-कामकाजी व्यक्ति के बारे में जानते हैं, तो कृपया मुझे बताएं। साथ ही, जब तक आपके पास मैक या विंडोज स्टैक नहीं है (जो असंभव है लेकिन हो सकता है), आप कहीं भी डॉकर को नहीं बल्कि लिनक्स पर चलाना नहीं चाहते हैं। डॉकर क्लाइंट मैक पर ठीक काम करता है, जल्द ही बीएसडी पर काम करना चाहिए और डिमन अंततः बीएसडी, सोलारिस और मैक का समर्थन करेगा। - creack
अगर कोई इन टिप्पणियों को पढ़ता है, तो आपको पता होना चाहिए कि डॉकर ने केवल 12 दिन पहले ver1.0 मारा था (blog.docker.com/2014/06/its-here-docker-1-0) और विभिन्न प्लेटफ़ॉर्म के बहुत सारे स्थिर और समर्थित हैं (docs.docker.com/installation) - JorgeArtware
वानर में एलएक्ससी और डॉकर प्रावधान हैं। हालांकि - वग्रेंट और डॉकर मौलिक रूप से अलग-अलग चीजें हैं। वाग्रेंट पूरी तरह से विकास वातावरण के लिए है, डॉकर केवल उत्पादन और लिनक्स के लिए है। - Dannyboy


अस्वीकरण: मैंने वाग्रेंट लिखा था! लेकिन क्योंकि मैंने वाग्रेंट लिखा था, मैं अपना अधिकांश समय देवोपस दुनिया में रहता हूं जिसमें डॉकर जैसे सॉफ़्टवेयर शामिल हैं। मैं वग्रेंट का उपयोग करके कई कंपनियों के साथ काम करता हूं और कई डॉकर का उपयोग करते हैं, और मैं देखता हूं कि दो इंटरप्ले कैसे।

इससे पहले कि मैं बहुत ज्यादा बात करता हूं, एक सीधा जवाब: अपने विशिष्ट परिदृश्य में (अकेले काम कर रहे हैं, लिनक्स पर काम कर रहे हैं, उत्पादन में डॉकर का उपयोग करके), आप अकेले डॉकर के साथ रह सकते हैं और चीजों को सरल बना सकते हैं। कई अन्य परिदृश्यों में (मैं आगे चर्चा करता हूं), यह इतना आसान नहीं है।

Vagrant से डॉकर की तुलना करने के लिए सीधे सही नहीं है। कुछ परिदृश्यों में, वे ओवरलैप करते हैं, और विशाल बहुमत में, वे नहीं करते हैं। असल में, अधिक उपयुक्त तुलना Vagrant बनाम Boot2Docker (न्यूनतम ओएस जो डॉकर चला सकती है) बनाम होगी। Vagrant abstctions के मामले में डॉकर से ऊपर एक स्तर है, इसलिए यह ज्यादातर मामलों में एक उचित तुलना नहीं है।

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

डॉकर विशेष रूप से डॉकर कंटेनर चलाता है। यदि आप सीधे वग्रेंट की तुलना कर रहे हैं: यह विशेष रूप से एक अधिक विशिष्ट (केवल डॉकर कंटेनर चला सकता है), कम लचीला (कहीं लिनक्स या लिनक्स होस्ट की आवश्यकता है) समाधान है। बेशक अगर आप उत्पादन या सीआई के बारे में बात कर रहे हैं, तो वाग्रेंट की कोई तुलना नहीं है! वाग्रेंट इन वातावरण में नहीं रहता है, और इसलिए डॉकर का उपयोग किया जाना चाहिए।

यदि आपका संगठन केवल अपनी सभी परियोजनाओं के लिए डॉकर कंटेनर चलाता है और केवल डेवलपर्स को लिनक्स पर चल रहा है, तो ठीक है, डॉकर निश्चित रूप से आपके लिए काम कर सकता है!

अन्यथा, मुझे अकेले डॉकर का उपयोग करने का प्रयास करने का कोई लाभ नहीं दिख रहा है, क्योंकि आप वाराणेंट को जो कुछ भी पेश करते हैं, उसे खो देते हैं, जिसमें असली व्यवसाय / उत्पादकता लाभ होता है:

  • Vagrant वर्चुअलबॉक्स, वीएमवेयर, एडब्ल्यूएस, ओपनस्टैक, आदि मशीनों को लॉन्च कर सकते हैं। इससे कोई फर्क नहीं पड़ता कि आपको क्या चाहिए, वाग्रेंट इसे लॉन्च कर सकता है। यदि आप डॉकर का उपयोग कर रहे हैं, तो वाग्रेंट इनमें से किसी पर डॉकर इंस्टॉल कर सकता है ताकि आप उन्हें उस उद्देश्य के लिए उपयोग कर सकें।

  • Vagrant आपकी सभी परियोजनाओं के लिए एक एकल वर्कफ़्लो है। या एक और तरीका डालने के लिए, यह केवल एक चीज है जिसे लोगों को एक परियोजना चलाने के लिए सीखना है चाहे वह डॉकर कंटेनर में हो या नहीं। यदि, उदाहरण के लिए, भविष्य में, एक प्रतियोगी सीधे डॉकर के साथ प्रतिस्पर्धा करने के लिए उठता है, तो व्रांत भी उसे चलाने में सक्षम होगा।

  • Vagrant विंडोज (वापस XP पर), मैक (वापस 10.5), और लिनक्स (कर्नेल 2.6 पर वापस) पर काम करता है। सभी तीन मामलों में, वर्कफ़्लो वही है। यदि आप डॉकर का उपयोग करते हैं, तो वाग्रेंट एक मशीन (वीएम या रिमोट) लॉन्च कर सकता है जो इन तीनों प्रणालियों पर डॉकर चला सकता है।

  • Vagrant जानता है कि नेटवर्किंग और सिंकिंग फ़ोल्डरों जैसे कुछ उन्नत या गैर-तुच्छ चीजों को कैसे कॉन्फ़िगर करें। उदाहरण के लिए: वाग्रेंट जानता है कि किसी मशीन या फॉरवर्ड पोर्ट्स पर स्थिर आईपी कैसे संलग्न करें, और कॉन्फ़िगरेशन वही है चाहे आप किस सिस्टम का उपयोग करते हैं (वर्चुअलबॉक्स, वीएमवेयर, इत्यादि) सिंक किए गए फ़ोल्डर्स के लिए, वाग्रेंट आपके स्थानीय को प्राप्त करने के लिए कई तंत्र प्रदान करता है रिमोट मशीन पर फ़ाइलें (वर्चुअलबॉक्स साझा फ़ोल्डर, एनएफएस, rsync, सांबा [प्लगइन], आदि)। यदि आप डॉकर का उपयोग कर रहे हैं, तो वाग्रेंट के बिना वीएम के साथ डॉकर भी, आपको मैन्युअल रूप से ऐसा करना होगा या उन्हें इस मामले में वाग्रेंट को फिर से शुरू करना होगा।

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

विशिष्ट काउंटर तर्कों को संबोधित करने के लिए जिन्हें मैंने वाग्रेंट के बजाय डॉकर का उपयोग करने के पक्ष में सुना है:

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

  • "यह तेज़ है!" - एक बार जब आपके पास होस्ट हो जो लिनक्स कंटेनर चला सकता है, तो किसी भी वर्चुअल मशीन को लॉन्च करने के लिए डॉकर एक कंटेनर चलाने में निश्चित रूप से तेज़ होता है। लेकिन वर्चुअल मशीन (या रिमोट मशीन) लॉन्च करना एक बार की लागत है। दिन के दौरान, अधिकांश वाग्रेंट उपयोगकर्ता वास्तव में कभी भी अपने वीएम को नष्ट नहीं करते हैं। यह विकास वातावरण के लिए एक अजीब अनुकूलन है। उत्पादन में, जहां डॉकर वास्तव में चमकता है, मैं समझता हूं कि कंटेनरों को तेज़ी से ऊपर / नीचे करने की आवश्यकता है।

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

निष्कर्ष में: अत्यधिक विशिष्ट उपयोग मामलों में, डॉकर निश्चित रूप से वाग्रेंट के लिए एक संभावित प्रतिस्थापन है। ज्यादातर उपयोग मामलों में, यह नहीं है। वाग्रेंट डॉकर के उपयोग में बाधा नहीं डालता है; यह वास्तव में ऐसा अनुभव करता है जो उस अनुभव को आसान बनाने के लिए कर सकता है। यदि आपको लगता है कि यह सच नहीं है, तो मुझे चीजों को बेहतर बनाने के लिए सुझाव लेने में खुशी है, क्योंकि वाग्रेंट का लक्ष्य किसी भी प्रणाली के साथ समान रूप से अच्छी तरह से काम करना है।

आशा है, इससे स्थिति स्पष्ट हो जाएगी!


2173
2018-01-23 16:55



@ जेरेडमार्केल मुझे लगता है कि शायद वह एक वेब-आधारित सेवा की तलाश में है जो उसे अपनी वाग्रेंट मशीनों का प्रबंधन करने देता है, जैसे कि Protobox। - Ryan Kennedy
@ मिशेल मैं बस इतना विस्तार से यह बताने के लिए धन्यवाद कहना चाहता था। जाहिर है कि आपके लिए पूरी तरह से उद्देश्य होना असंभव है इसलिए मैं सराहना करता हूं कि आपने व्याख्यान और विभिन्न स्थितियों को समझाने के लिए समय निकाला है जहां उनका उपयोग किया जा सकता है। मुझे लगता है कि आज विभिन्न उपकरणों के आसपास बहुत भ्रम यह है कि वे बहुत अधिक ओवरलैप करते हैं, और बहुत से लोग एक आकार के फिट बैठते हैं-सभी समाधान जहां कोई सिर्फ उन्हें बताता है कि क्या करना है और वे इसे कार्यान्वित कर सकते हैं। आपके उत्तर की सुंदरता यह है कि यह अंतर्निहित प्रश्न का उत्तर देता है: मैं एक अलग वातावरण कैसे बना सकता हूं? (उपकरण के बावजूद)। - Jordan
@ जेरेडमार्केल डॉकर का एक आरईएसटी एपीआई है docs.docker.com/reference/api/docker_remote_api - Tarnay Kálmán
@ OğuzÇelikdemir Vagrant उससे भी अधिक कर सकते हैं। बेशक, यदि आप प्रत्येक परियोजना के लिए एक विशिष्ट आभासी मशीन तैयार करते हैं, तो यह आखिरी रहेगा। लेकिन विकास के दौरान मैं अक्सर अधिक सेवाएं / डेमॉन / सेटिंग्स जोड़ना समाप्त करता हूं (उदाहरण के लिए। जब ​​मैं विकास के दौरान एक परियोजना के लिए खरगोश एमक्यू का उपयोग करने का फैसला करता हूं)। शुद्ध रूप से वीएम दृष्टिकोण की आवश्यकता होगी कि आप एक नई छवि तैयार करें, RabbitMQ स्थापित और कॉन्फ़िगर किया गया है, और डेवलपर्स को अपने वीएम को इस नए में बदलने के लिए मजबूर करें। वग्रेंट के लिए - मैं योनि की समाप्ति में उचित लाइन जोड़ रहा हूं और सभी डेवलपर्स आसानी से अपने वीएम को अपग्रेड कर सकते हैं vagrant provision)। - Tomasz Struczyński
(आपका मतलब है "प्रकटीकरण", कुछ महत्वपूर्ण खुलासा, "अस्वीकरण" नहीं, जिम्मेदारी से इनकार करना: english.stackexchange.com/q/115850) - Jerry101


मैं डॉकर का लेखक हूं।

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

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

यह एक आम गलतफहमी है कि आप केवल लिनक्स पर डॉकर का उपयोग कर सकते हैं। यह गलत है; आप मैक पर डॉकर भी इंस्टॉल कर सकते हैं, और विंडोज़ समर्थन चल रहा है। मैक पर स्थापित होने पर, डॉकर एक छोटे लिनक्स वीएम (डिस्क पर 25 एमबी!) बंडल करता है जो आपके कंटेनर के लिए एक रैपर के रूप में कार्य करता है। एक बार स्थापित होने पर यह पूरी तरह से पारदर्शी है; आप उसी तरह डॉकर कमांड लाइन का उपयोग कर सकते हैं। यह आपको दोनों दुनिया के सर्वश्रेष्ठ प्रदान करता है: आप कंटेनरों का उपयोग करके अपने आवेदन का परीक्षण और विकास कर सकते हैं, जो बहुत हल्के, परीक्षण करने में आसान और चारों ओर स्थानांतरित करने में आसान हैं (उदाहरण के लिए देखें https://hub.docker.com डॉकर समुदाय के साथ पुन: प्रयोज्य कंटेनरों को साझा करने के लिए), और आपको वर्चुअल मशीनों के प्रबंधन के बारे में चिंता करने की आवश्यकता नहीं है, जो किसी भी तरह से समाप्त होने का साधन हैं।

सिद्धांत रूप में डॉकर के लिए एक अमूर्त परत के रूप में वाग्रेंट का उपयोग करना संभव है। मैं इसके खिलाफ दो कारणों से सिफारिश करता हूं:

  • सबसे पहले, वाग्रेंट डॉकर के लिए एक अच्छा अमूर्त नहीं है। Vagrant वर्चुअल मशीनों का प्रबंधन करने के लिए डिज़ाइन किया गया था। डॉकर को एप्लिकेशन रनटाइम प्रबंधित करने के लिए डिज़ाइन किया गया था। इसका मतलब यह है कि डिजाइन द्वारा डॉकर, अमीर तरीके से एक एप्लिकेशन के साथ बातचीत कर सकता है, और एप्लिकेशन रनटाइम के बारे में अधिक जानकारी है। डॉकर में प्राइमेटिव प्रक्रियाएं, लॉग स्ट्रीम, पर्यावरण चर, और घटकों के बीच नेटवर्क लिंक हैं। वाग्रेंट में प्राइमेटिव मशीन, ब्लॉक डिवाइस और एसएसएच कुंजी हैं। वाग्रेंट बस स्टैक में कम बैठता है, और एक कंटेनर के साथ बातचीत करने का एकमात्र तरीका यह है कि यह सिर्फ एक और प्रकार की मशीन है, जिसे आप "बूट" और "लॉग इन" कर सकते हैं। तो, निश्चित रूप से, आप एक डॉकर प्लगइन के साथ "वानर अप" टाइप कर सकते हैं और कुछ सुंदर होगा। क्या यह डॉकर क्या कर सकता है की पूरी चौड़ाई के लिए एक विकल्प है? कुछ दिनों के लिए देशी डॉकर आज़माएं और खुद के लिए देखें :)

  • दूसरा, लॉक-इन तर्क। "यदि आप एक अमूर्तता के रूप में वाग्रेंट का उपयोग करते हैं, तो आपको डॉकर में बंद नहीं किया जाएगा!"। वाग्रेंट के दृष्टिकोण से, जो मशीनों को प्रबंधित करने के लिए डिज़ाइन किया गया है, यह सही समझ में आता है: कंटेनर सिर्फ एक और प्रकार की मशीन नहीं हैं? अमेज़ॅन ईसी 2 और वीएमवेयर की तरह, हमें सावधान रहना चाहिए कि हमारे प्रावधान उपकरण को किसी विशेष विक्रेता को न बांधें! यह लॉक-इन बनाएगा - इसे सभी को वग्रेंट के साथ समेकित करने के लिए बेहतर होगा। इसके अलावा यह पूरी तरह से डॉकर बिंदु को याद करता है। डॉकर मशीनों का प्रावधान नहीं करता है; यह आपके आवेदन को एक हल्के पोर्टेबल रनटाइम में लपेटता है जिसे कहीं भी छोड़ा जा सकता है।

आपके आवेदन के लिए आपके द्वारा चुने गए रनटाइम के पास कुछ भी नहीं है कि आप अपनी मशीनों को कैसे प्रावधान करते हैं! उदाहरण के लिए यह उन मशीनों पर अनुप्रयोगों को तैनात करने के लिए अक्सर होता है जो किसी और द्वारा प्रावधान किए जाते हैं (उदाहरण के लिए आपके सिस्टम प्रशासक द्वारा तैनात एक ईसी 2 उदाहरण, शायद वाग्रेंट का उपयोग करके), या नंगे धातु मशीनों के लिए जो वाग्रेंट प्रावधान नहीं कर सकते हैं। इसके विपरीत, आप उन प्रावधान मशीनों के लिए वग्रेंट का उपयोग कर सकते हैं जिनके पास आपके आवेदन को विकसित करने के लिए कुछ भी नहीं है - उदाहरण के लिए एक उपयोग में आसान विंडोज आईआईएस बॉक्स या कुछ। या आप परियोजनाओं के लिए प्रावधान मशीनों के लिए वग्रेंट का उपयोग कर सकते हैं जो डॉकर का उपयोग नहीं करते हैं - शायद वे निर्भरता प्रबंधन और सैंडबॉक्सिंग के लिए रूबीजम्स और आरवीएम के संयोजन का उपयोग करते हैं।

संक्षेप में: वाग्रेंट मशीनों के प्रबंधन के लिए है, और डॉकर अनुप्रयोग वातावरण बनाने और चलाने के लिए है।


1282
2018-03-13 06:16



बस यह ध्यान रखना चाहता था कि इस उत्तर के वाग्रेंट पहलू गलत हैं। वाग्रेंट मशीनों के प्रबंधन के लिए नहीं है, वाग्रेंट विकास वातावरण के प्रबंधन के लिए है। तथ्यों Vagrant स्पिन मशीनें ज्यादातर ऐतिहासिक है। वाग्रेंट के अगले संस्करण में मेजबान या किसी भी वीएम (मैक, विन) पर सीधे प्रदाता के रूप में डॉकर का उपयोग करके देव पर्यावरण को स्पिन करने के लिए प्रथम श्रेणी का समर्थन होता है। यह कच्चे एलएक्ससी को भी बढ़ा सकता है अगर कोई ऐसा चाहता है (फिर से, मेजबान या वीएम पर)। Vagrant एक पोर्टेबल विकास पर्यावरण बनाने के लिए सबसे अच्छा क्या करने में रुचि रखते हैं, चाहे इसका मतलब है वीएम बनाना या नहीं। - Mitchell
@ मिशेल - क्या आप कृपया बीटा के कुछ दस्तावेज़ों को इंगित कर सकते हैं जो इस कथन पर अधिक विस्तृत हैं? मुझे इसमें बहुत दिलचस्पी है। - Davide
"यह एक आम गलतफहमी है कि आप केवल लिनक्स पर डॉकर का उपयोग कर सकते हैं" हालांकि यह सच है, यह कहना सही है कि आप केवल डॉकर पर लिनक्स का उपयोग कर सकते हैं। यदि मैं एक परीक्षण धावक स्थापित करना चाहता हूं जो कि विभिन्न अनुप्रयोगों में विभिन्न अनुप्रयोगों (विभिन्न डेटाबेस, PHP संस्करण, कैशिंग बैकएंड इत्यादि) में मेरा उपयोग करता है, तो मैं आसानी से डॉकर कंटेनर के साथ ऐसा कर सकता हूं। लेकिन मैं नहीं देख सकता कि मेरा एप्लिकेशन विंडोज आईआईएस एनवी, या बीएसडी या ओएसएक्स पर ठीक से चल जाएगा या नहीं। - Mixologic
आपका पहला बिंदु पुराना है क्योंकि वाग्रेंट ने डॉकर के लिए प्रदाता समर्थन अंतर्निहित किया है: docs.vagrantup.com/v2/provisioning/docker.html - Alp
पद पुराना है। Vagrant अब एक प्रदाता के रूप में डॉकर का समर्थन करता है। और कुछ वीडियो दिखा रहे हैं कि आप एकजुट होकर वग्रेंट और डॉकर का उपयोग कैसे कर सकते हैं ब्लॉग। - sargas


मैं स्वीकार कर अपने जवाब का प्रस्ताव देता हूं कि मुझे डॉकर के साथ कोई अनुभव नहीं है, जो वास्तव में एक साफ समाधान होने वाला एक उग्र पर्यवेक्षक के अलावा है जो बहुत अधिक कर्षण प्राप्त कर रहा है।

मेरे पास वाग्रेंट के साथ एक सभ्य अनुभव है और इसकी अत्यधिक अनुशंसा कर सकते हैं। एलएक्ससी आधारित के बजाय वीएम आधारित होने के मामले में यह निश्चित रूप से एक अधिक हेवीवेट समाधान है। हालांकि, मुझे एक सभ्य लैपटॉप (8 जीबी रैम, आई 5 / आई 7 सीपीयू) मिला है, जिसमें विकास उपकरण के साथ वग्रेंट / वर्चुअलबॉक्स का उपयोग करके वीएम चलाने में कोई दिक्कत नहीं है।

वाग्रेंट के साथ वास्तव में महान चीजों में से एक एकीकरण है कठपुतली/महाराज/ स्वचालित विन्यास के लिए खोल स्क्रिप्ट। यदि आप अपने उत्पादन वातावरण को कॉन्फ़िगर करने के लिए इन विकल्पों में से किसी एक का उपयोग कर रहे हैं, तो आप एक विकास वातावरण बना सकते हैं जो कि जैसा कि आप प्राप्त करने जा रहे हैं, उतना ही करीब है, और यह वही है जो आप चाहते हैं।

वाग्रेंट के साथ दूसरी बड़ी बात यह है कि आप अपने आवेदन कोड के साथ अपने Vagrantfile संस्करण कर सकते हैं। इसका मतलब है कि आपकी टीम के हर कोई इस फ़ाइल को साझा कर सकता है और आपको गारंटी है कि हर कोई एक ही पर्यावरण विन्यास के साथ काम कर रहा है।

दिलचस्प बात यह है कि, वग्रेंट और डॉकर वास्तव में मानार्थ हो सकता है। विभिन्न वर्चुअलाइजेशन प्रदाताओं का समर्थन करने के लिए Vagrant बढ़ाया जा सकता है, और यह संभव हो सकता है कि डॉकर ऐसा एक प्रदाता है जो निकट भविष्य में समर्थन प्राप्त करता है। देख https://github.com/dotcloud/docker/issues/404 विषय पर हालिया चर्चा के लिए।


73
2018-06-25 21:33



दोस्तों, मैंने एक जारी किया प्रयोगात्मक डॉकर के लिए वानर प्रदाता: github.com/fgrehm/docker-provider। - fgrehm
डॉकर वर्चुअलाइजेशन नहीं है, लेकिन एक ही मेजबान कर्नेल का उपयोग करके ओएस को अपने कंटेनर के अंदर चलाता है, यह प्रदाता नहीं है अन्यथा वीएम की तरह, इसलिए डॉकर पहले से ही वग्रेंट द्वारा समर्थित है। - Aftab Naveed
डॉकर ओएस का आभासीकरण है, अंतर्निहित हार्डवेयर का पूरी तरह से उपयोग कर रहा है। यह वर्चुअलाइजेशन है क्योंकि यह एक कंटेनर में चल रही फाइल सिस्टम, नेटवर्किंग और प्रक्रियाओं को सारणीबद्ध और पृथक करता है। - jose.angel.jimenez


वे बहुत पूरक हैं।

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

Vagrant में आप किसी भी शेफ एकल प्रावधान के साथ पूरी तरह से दूर कर सकते हैं और आपको अपनी वोनर फ़ाइल करने की ज़रूरत है, एक ऐसी मशीन तैयार करें जो एक छोटी सी शेल स्क्रिप्ट चलाती है जो डॉकर इंस्टॉल करती है। इसका मतलब है कि प्रत्येक परियोजना के लिए मेरे Vagrantfiles लगभग समान और बहुत सरल हैं।

यहां एक ठेठ Vagrantfile है

# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "mark2"
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
  [3000, 5000, 2345, 15672, 5672, 15674, 27017, 28017, 9200, 9300, 11211, 55674, 61614, 55672, 5671, 61613].each do |p|
    config.vm.network :forwarded_port, guest: p, host: p
  end
  config.vm.network :private_network, ip: "192.168.56.20"
  config.vm.synced_folder ".", "/vagrant", :type => "nfs"
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
    vb.customize ["modifyvm", :id, "--cpus", "2"]
  end
  # Bootstrap to Docker
  config.vm.provision :shell, path: "script/vagrant/bootstrap", :privileged => true
  # Build docker containers
  config.vm.provision :shell, path: "script/vagrant/docker_build", :privileged => true
  # Start containers
  # config.vm.provision :shell, path: "script/vagrant/docker_start", :privileged => true
end

डॉकर इंस्टॉल करने वाली बूटस्ट्रैप फ़ाइल इस तरह दिखती है

#!/usr/bin/env bash
echo 'vagrant  ALL= (ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
apt-get update -y
apt-get install htop -y
apt-get install linux-image-extra-`uname -r` -y
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list
apt-get update -y
apt-get install lxc-docker -y
apt-get install curl -y

अब मुझे चलाने वाली सभी सेवाओं को प्राप्त करने के लिए मेरे पास एक डॉकर_स्टार्ट स्क्रिप्ट है जो इस तरह कुछ दिखती है

#!/bin/bash
cd /vagrant
echo Starting required service containers
export HOST_NAME=192.168.56.20
# Start MongoDB
docker run --name=mongodb --detach=true --publish=27017:27017 --publish=28017:28017 dockerfile/mongodb
read -t5 -n1 -r -p "Waiting for mongodb to start..." key
# Start rabbitmq
docker run --name=rabbitmq --detach=true --publish=5671:5671 --publish=5672:5672 --publish=55672:55672 --publish=15672:15672 --publish=15674:15674 --publish=61613:61613 --env RABBITMQ_USER=guest --env RABBITMQ_PASS=guest rabbitmq
read -t5 -n1 -r -p "Waiting for rabbitmq to start..." key
# Start cache
docker run --name=memcached --detach=true --publish=11211:11211  ehazlett/memcached
read -t5 -n1 -r -p "Waiting for cache to start..." key
# Start elasticsearch
docker run --name=elasticsearch --detach=true --publish=9200:9200 --publish=9300:9300 dockerfile/elasticsearch
read -t5 -n1 -r -p "Waiting for elasticsearch to start..." key
echo "All services started"

इस उदाहरण में मैं मोंगो डीबी, एलिस्टिसर्च, रैबिटएमक्यू और मेमकैच चला रहा हूं

एक गैर-डॉकर शेफ एकल कॉन्फ़िगरेशन काफी जटिल होगा।

जब आप उत्पादन में आगे बढ़ रहे हों, तो विकास के माहौल को मेजबानों के बुनियादी ढांचे में अनुवाद करने के लिए एक अंतिम बड़ा प्लस प्राप्त किया गया है, जिसमें वे सभी हैं, उनके पास सिर्फ डॉकर चलाने के लिए पर्याप्त कॉन्फ़िगरेशन है, वास्तव में बहुत कम काम है।

यदि आप रुचि रखते हैं तो मेरे पास अपनी खुद की वेबसाइट पर विकास पर्यावरण पर एक और विस्तृत लेख है

एक वाग्रेंट / डॉकर विकास पर्यावरण को कार्यान्वित करना


52
2017-08-20 20:42



आपने उस डॉकर_स्टार्ट ऑर्केस्ट्रेशन के सभी किया लेकिन कंटेनरों को एकसाथ जोड़ने से परेशान नहीं किया। क्या आप बस हार्ड-कोड वाले पोर्ट नंबरों के साथ जा रहे हैं क्योंकि आप इसे वाग्रेंट के तहत चला रहे हैं? - WineSoaked
हाय वाइनसोक्ड, उपरोक्त उदाहरण कंटेनर नहीं दिखाता है जो वास्तव में उन सभी सेवाओं का उपयोग करता है। यदि आप उल्लिखित ब्लॉग पोस्ट को देखते हैं तो एक और स्क्रिप्ट स्क्रिप्ट / योनेंट / डॉकर_वेब है जो परियोजना के लिए विकास कंटेनर को सक्रिय करती है। यह वास्तव में डॉकर रन कमांड पर लिंक का उपयोग करता है और रेल परियोजनाएं सेवाओं से जुड़ने के लिए डॉकर इंजेक्शन वाले पर्यावरण चर का उपयोग करती हैं। - Mark Stratmann
मैं संभावित रूप से दोनों उत्पादों को विलय कर सकता हूं। ऐप रैपर के लिए पर्यावरण परीक्षण और डॉकर के रूप में वाग्रेंट। दोनों विलय आप कई एस्किनियोरियों पर एक ऐप या यूनिट-टेस्ट का परीक्षण कर सकते हैं। मुझे लगता है कि कई "परीक्षण प्लेटफार्म सेवाएं" समय पर वाग्रेंट + डॉकर का उपयोग कर रही हैं। - erm3nda
"वे बहुत अधिक मानार्थ हैं।" - वास्तव में उपयोग करने के लिए दोनों स्वतंत्र हैं। - Underyx
हाय @ कोपर मैं पिछले तीन महीने पहले डॉकर मशीन का इस्तेमाल करता था और अभी तक वापस नहीं गया हूं। मेरी समस्या यह थी कि VMWare ड्राइवर का उपयोग करते समय मेरे मैक होस्ट होस्ट से फ़ोल्डर्स को वीएम चलने वाले डॉकर में साझा करने में एक बग है। इसका मतलब था कि मैक पर स्थानीय रूप से कोड संपादित नहीं कर सका और डॉकर कंटेनर में बदलावों को प्रतिबिंबित किया गया है। मुझे नहीं पता कि उन्होंने अभी तक इसे ठीक कर दिया है, जब वे करते हैं तो मैं वास्तव में इसे स्विच कर दूंगा। हालांकि मैंने इस जवाब को लिखने के बाद मेरे सभी कंटेनर ऑर्केस्ट्रेशन को डॉकर कम्पोज़ में बदल दिया है - Mark Stratmann


आवारा-LXC वाग्रेंट के लिए एक प्लगइन है कि आप Vagrant प्रावधान के लिए एलएक्ससी का उपयोग करते हैं। इसमें सभी सुविधाएं नहीं हैं जो डिफ़ॉल्ट वारंटी वीएम (वर्चुअलबॉक्स) है लेकिन यह आपको डॉकर कंटेनर की तुलना में अधिक लचीलापन की अनुमति देनी चाहिए। लिंक में एक वीडियो है जो इसकी क्षमताओं को दिखाता है जो देखने लायक है।


48
2017-08-01 18:44



और यहां परियोजना के लिए सीधा लिंक है github.com/fgrehm/vagrant-lxc - gertas


Vagrant के साथ अब आप एक प्रदाता के रूप में डॉकर हो सकता है। http://docs.vagrantup.com/v2/docker/। वर्चुअलबॉक्स या वीएमवेयर के बजाय डॉकर प्रदाता का उपयोग किया जा सकता है।

कृपया ध्यान दें कि आप वाग्रेंट के प्रावधान के लिए डॉकर का भी उपयोग कर सकते हैं। यह प्रदाता के रूप में डॉकर का उपयोग करने से बहुत अलग है। http://docs.vagrantup.com/v2/provisioning/docker.html

इसका मतलब है कि आप प्रतिस्थापित कर सकते हैं महाराज या कठपुतली डॉकर के साथ। आप शेफ के साथ प्रावधान के रूप में डॉकर जैसे प्रदाता (वीएम) के संयोजन जैसे संयोजन का उपयोग कर सकते हैं। या आप वर्चुअलबॉक्स को प्रदाता और डॉकर के रूप में प्रावधान के रूप में उपयोग कर सकते हैं।


41
2018-05-30 16:10



दुनिया सिर्फ पागल हो गई;) हम योनर के अंदर डॉकर कंटेनर चलाने के लिए डॉकर प्रदाता का उपयोग करके योनि चला सकते हैं - Hoto
@zainengineer, क्या विंडोज़ पर वाग्रेंट के लिए डॉकर प्रदाता अभी भी boot2docker का उपयोग करता है या क्या यह डॉकर टूलबॉक्स के कुछ प्रकार का उपयोग करता है? - Derek Mahar
@zainengineer क्या आपके पास उदाहरण उदाहरणों (योनि डॉक्स नहीं) के कुछ लिंक हैं? - Tset Noitamotua


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

सोच इस तरह कुछ जाती है:

  • जावा / गो एप्लिकेशन घटक लें और इसे कंटेनर के रूप में बनाएं (ध्यान दें, सुनिश्चित नहीं है कि ऐप को कंटेनर में बनाया जाना चाहिए या फिर बनाया गया है कंटेनर में स्थापित)
  • कंटेनर को एक वाग्रेंट वीएम में वितरित करें।
  • सभी एप्लिकेशन घटकों के लिए इसे दोहराएं।
  • के खिलाफ कोड करने के लिए घटक (ओं) पर Iterate।
  • वग्रेंट द्वारा प्रबंधित वीएम (एस) को वितरण तंत्र का निरंतर परीक्षण करें
  • जब यह कंटेनर को तैनात करने का समय होता है तो अच्छी तरह से सो जाओ, कि एकीकरण परीक्षण डॉकर से पहले की तुलना में अधिक निरंतर आधार पर हो रहा था।

यह मिशेल के बयान का तार्किक विस्तार प्रतीत होता है कि वाग्रेंट निरंतर वितरण में सोचने वाले फर्ले / हम्बल के साथ संयुक्त विकास के लिए है। यदि मैं, एक डेवलपर के रूप में, एकीकरण परीक्षण और अनुप्रयोग वितरण पर फीडबैक लूप को कम कर सकता हूं, उच्च गुणवत्ता और बेहतर कार्य वातावरण का पालन करेंगे।

तथ्य यह है कि एक डेवलपर के रूप में मैं निरंतर और लगातार वीएम में कंटेनरों को वितरित करता हूं और आवेदन का परीक्षण अधिक समग्र रूप से करता हूं कि उत्पादन विज्ञप्ति और अधिक सरल हो जाएगी।

तो मैं डैगर को ऐप परिनियोजन के लिए कुछ शानदार परिणामों का लाभ उठाने के तरीके के रूप में विकसित करने वाले वाग्रेंट को देखता हूं।


11
2018-06-20 00:56



क्या आप किसी भी मौके से इस बारे में ब्लॉग पोस्ट करते हैं? यह लगभग दो साल हो गया है, यह कैसे चल रहा है? अभी भी डॉकर या सिर्फ डॉकर और डॉकर-बेड़े / मशीन के साथ वानर का उपयोग कर रहे हैं? - Hoto
जिस कंपनी के लिए मैं काम कर रहा था वह अधिग्रहित किया गया था और उन्होंने मेरी सारी सामग्री @ होटो को हटा दिया। संक्षिप्त जवाब है कि मैं अपने पालतू परियोजनाओं के लिए घर पर डॉकर मशीन का उपयोग करता हूं। काम पर मैं <gulp> manager </ gulp> हूं और बहुत अधिक तकनीक नहीं करता हूं। हमारे पास डॉकर का उपयोग करने की योजना नहीं है इसलिए हमारा टूल आम तौर पर वाग्रेंट होता है। - Boyd Hemphill


वाग्रेंट (और कठपुतली) के साथ संयोजन में डॉकर का उपयोग करने के बारे में वास्तविक ओरेकल जावा पत्रिका में वास्तव में एक जानकारीपूर्ण आलेख है:

निष्कर्ष

क्लासिक वीएम के साथ तुलना में डॉकर के हल्के कंटेनर तेजी से होते हैं   और डेवलपर्स और सीडी और देवओप्स के हिस्से के रूप में लोकप्रिय हो गए हैं   पहल। यदि आपका उद्देश्य अलगाव है, तो डॉकर एक उत्कृष्ट विकल्प है।   Vagrant एक वीएम प्रबंधक है जो आपको स्क्रिप्ट कॉन्फ़िगरेशन करने में सक्षम बनाता है   व्यक्तिगत वीएम के साथ ही प्रावधान करते हैं। हालांकि, यह एक है   अपेक्षाकृत के साथ वर्चुअलबॉक्स (या एक और वीएम प्रबंधक) पर निर्भर वीएम   बड़ा ऊपरी भाग यह आपको एक हार्ड ड्राइव निष्क्रिय होने की आवश्यकता है जो हो सकता है   विशाल, यह बहुत सी रैम लेता है, और प्रदर्शन suboptimal हो सकता है। डाक में काम करनेवाला मज़दूर   एलएक्ससी के माध्यम से कर्नेल सीग्रुप और नेमस्पेस अलगाव का उपयोग करता है। इस का मतलब है कि   आप मेजबान और एक ही आईइल सिस्टम के समान कर्नेल का उपयोग कर रहे हैं।   Vagrant अमूर्तता के मामले में डॉकर से ऊपर एक स्तर है, तो वे हैं   वास्तव में तुलनीय नहीं है। कठपुतली प्रबंधन उपकरण जैसे कठपुतली हैं   व्यापक रूप से प्रावधान लक्ष्य वातावरण के लिए उपयोग किया जाता है। मौजूदा का पुन: उपयोग करना   डॉकर के साथ कठपुतली आधारित समाधान आसान है। आप अपना टुकड़ा भी कर सकते हैं   समाधान, इसलिए बुनियादी ढांचे को कठपुतली के साथ प्रावधान किया जाता है;   मिडलवेयर, व्यवसाय अनुप्रयोग स्वयं, या दोनों प्रावधान हैं   डॉकर के साथ; और डॉकर वाग्रेंट द्वारा लपेटा गया है। इस सीमा के साथ   टूल्स, आप अपने परिदृश्य के लिए सबसे अच्छा कर सकते हैं।

DevOps में डॉकर कंटेनर का निर्माण, उपयोग और ऑर्केस्ट्रेट कैसे करें http://www.javamagazine.mozaicreader.com/JulyAug2015#&pageSet=34&page=0


5
2017-08-20 13:04



और यदि आप बेवकूफ और लंबे रूपों को भरना नहीं चाहते हैं और आपके पास आईओएस डिवाइस है, तो ऐप और समस्या को केवल दो नल के साथ डाउनलोड करने में संकोच न करें: itunes.apple.com/app/java-magazine/id530494326?mt=8 - Rafael Bugajewski
इतने सारे टी गायब थे - Paul Verest