डॉकर के साथ ओएस एक्स पर विकास के माहौल को स्थापित करने का सही तरीका क्या है?


94

पहचान

मैं Docker और Boot2Docker का उपयोग करके OS X पर एक विकास वातावरण स्थापित करने का एक अच्छा तरीका नहीं समझ सकता। समस्या मैं मार रहा हूँ कैसे स्रोत कोड का प्रबंधन करने के लिए है कि:

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

सिद्धांत रूप में, वॉल्यूम के रूप में मेरे स्रोत कोड को बढ़ते हुए ऐसा करना आसान होना चाहिए:

docker run -it -v /path/to/my/source/code:/src some-docker-image

दुर्भाग्य से, इसके दो प्रमुख मुद्दे हैं जो इसे OS X पर पूरी तरह से अनुपयोगी बनाते हैं:

अंक # 1: वर्चुअलबॉक्स पर माउंट किए गए वॉल्यूम (जो vboxsf का उपयोग करते हैं) बेहद धीमी हैं

उदाहरण के लिए, स्रोत कोड डॉकर छवि का हिस्सा है, तो मेरे होमपेज को संकलित करने में जेकिल को कितना समय लगता है, यहां है :

> docker run -it brikis98/yevgeniy-brikman-homepage:v1 bash

root@7aaea30d98a1:/src# time bundle exec jekyll build

[...]

real    0m7.879s
user    0m7.360s
sys     0m0.600s

यहां ठीक उसी डॉकर छवि है, इस समय को छोड़कर, मैं ओएस एक्स से स्रोत कोड को माउंट करता हूं:

> docker run -it -v $(pwd):/src brikis98/yevgeniy-brikman-homepage:v1 bash

root@1521b0b4ce6a:/src# time bundle exec jekyll build

[...]

real    1m14.701s
user    0m9.450s
sys     0m3.410s

अंक # 2: फ़ाइल देखना टूट गया है

SBT, Jekyll, और ग्रन्ट में डिफ़ॉल्ट वॉच मेकेनिज्म, inotify जैसी तकनीकों का उपयोग करते हैं, जो डॉकटर कंटेनर में चल रहे हैं और ओएस एक्स में माउंट किए गए फ़ोल्डर में बदलाव किए जाने पर काम नहीं करते हैं।

वर्कअराउंड मैंने कोशिश की

मैंने समाधान खोजा (एसओ पर सभी लोगों सहित) और उनमें से कुछ को आज़माया, लेकिन एक सफल नहीं मिला है:

  1. मैंने NFS का उपयोग करने के लिए Boot2Docker को स्विच किया , लेकिन यह उतना ही धीमा था।
  2. मैंने Vagrant + NFS की कोशिश की , और वह भी बिल्कुल धीमी गति से।
  3. मैंने सांबा माउंट की कोशिश की , लेकिन फोल्डर हमेशा डॉकटर कंटेनर में खाली दिखा।
  4. मैंने यूनिसन फाइल सिस्टम का उपयोग करने की कोशिश की , जो फाइलों को सिंक करने के लिए संक्षेप में काम करता था, लेकिन फिर कनेक्शन त्रुटियों को दिखाता रहा
  5. मैंने Jekyll में मतदान को सक्षम किया , लेकिन जब तक मेरे परिवर्तन नहीं किए गए, तब तक देरी बढ़ गई।
  6. मैंने डिंगी की कोशिश की , "वैग्रंट के साथ ओएस एक्स पर एक तेज, मित्रवत डॉकटर" और कुछ सुधार हुआ। Jekyll संकलन 10-15x धीमा होने के बजाय, यह 2-3x धीमा था। यह बेहतर है, लेकिन अभी भी काफी उपयोगी नहीं है।

क्या किसी ने एक समाधान पाया है जो वास्तव में काम करता है और आपको डॉकर और ओएस एक्स के साथ कोड विकसित करने की अनुमति देता है?

अद्यतन: अंत में एक समाधान!

मैंने आखिरकार एक ऐसा समाधान ढूंढ लिया है जो Boot2Docker + rsync का उपयोग करके उत्पादक लगता है। मैंने इस विवरण को अपने स्वयं के उत्तर के साथ-साथ एक ओपन-सोर्स प्रोजेक्ट के रूप में सेट करने के तरीके पर कब्जा कर लिया है, जिसे docker-osx-dev कहा जाता है ।


आपने NFS के साथ OS X के लिए आधिकारिक Docker इंस्टॉलर की कोशिश की है? AFAIK यह ओएस एक्स पर डॉकर तक ही सीमित नहीं है, बल्कि बड़े कोडबेस (एस) के साथ ओएस एक्स पर वैग्रैंट आधारित विकास भी है ( हमारे पास वैगरेंट के साथ भी ऐसा ही मुद्दा है )। मैंने NFS को एकमात्र व्यवहार्य और स्वीकार्य समाधान पाया है।
जेम्स मिल्स

@JamesMills: मैंने Docker और Boot2Docker को स्थापित करने के लिए आधिकारिक निर्देशों का पालन किया। क्या एनएफएस की स्थापना के लिए आधिकारिक निर्देश हैं? मैंने केवल उन्हें GitHub gist में पाया, और उनका उपयोग करने के बाद, यह तेज़ नहीं लगा। आपने NFS की स्थापना कैसे की?
येवगेनी ब्रिकमैन

क्या आपने github.com/boot2docker/boot2docker/issues/64 देखा है ?
जेम्स मिल्स

6
डॉकर के साथ काम करने का सही तरीका है कि ओएस एक्स के बजाय लिनक्स को मूल रूप से चलाएं, या लिनक्स वीएम के अंदर अपने सभी विकास कार्य करें। "Boot2docker" एकीकरण एक बड़ा बदसूरत हैक है जो भ्रम और निराशा के अलावा कुछ नहीं करता है।
लार्क्स

7
@ लार्क्स: यह मददगार नहीं है।
येवगेनी ब्रिकमैन

जवाबों:


46

मैंने अब तक के सबसे अच्छे समाधान के साथ अपना जवाब जोड़ने का फैसला किया है। यदि मुझे बेहतर विकल्प मिलते हैं तो मैं इसे अपडेट करूंगा।

अब तक का सबसे अच्छा समाधान

ओएस एक्स पर डॉकर के साथ एक उत्पादक विकास वातावरण स्थापित करने के लिए मैंने जो सबसे अच्छा समाधान खोजा है, वह है: बूट 2 डॉकटर + रुपी । Rsync के साथ, Docker कंटेनर में बार का निर्माण, OSX पर सीधे बिल्ड को चलाने के बराबर है! इसके अलावा, फ़ाइल वॉचर कोड को मतदान की आवश्यकता नहीं है ( inotifyक्योंकि rsync सामान्य फ़ोल्डरों का उपयोग करता है), इसलिए हॉट रीलोड लगभग उतना ही तेज़ है।

इसे स्थापित करने के दो तरीके हैं: एक स्वचालित इंस्टॉल और एक मैनुअल इंस्टॉल।

स्वचालित स्थापित

मैंने एक ओपन सोर्स प्रोजेक्ट में Rsync के साथ Boot2Docker की स्थापना के लिए सभी चरणों को पैक कर दिया है जिसे docker -osx-dev कहा जाता है । कोड थोड़ा खुरदरा है, लेकिन मैं इसे 3 सप्ताह के लिए 3 अलग-अलग टेक स्टैक के साथ आसानी से स्विच करने के लिए कई हफ्तों से सफलतापूर्वक उपयोग कर रहा हूं। इसे आज़माएं, बग रिपोर्ट करें, और कुछ PRs सबमिट करें! इसके अलावा, मेरे ब्लॉग पोस्ट, अधिक जानकारी के लिए ओएस एक्स पर डॉकर के साथ एक उत्पादक विकास वातावरण देखें

स्वतः व्यवस्था

  1. स्थापित Boot2Docker : brew install boot2docker
  2. Boot2Docker चलाएं, लेकिन VirtualBox साझा किए गए फ़ोल्डरों के साथ अक्षम boot2docker init && boot2docker start --vbox-share=disable:।
  3. boot2docker shellinitपर्यावरण वैरिएबल को चलाएं और कॉपी करें जो आपकी ~/.bash_profileफ़ाइल में प्रिंट करता है।
  4. Boot2Docker VM पर rsync स्थापित करें boot2docker ssh "tce-load -wi rsync":।
  5. Boot2Docker VM पर आपके द्वारा आवश्यक आधार फ़ोल्डर बनाएं और उनके लिए अनुमतियाँ सही ढंग से सेट करें। उदाहरण के लिए, यदि आप /foo/barOS X से फ़ोल्डर को सिंक्रनाइज़ कर रहे हैं, तो आपको /foo/barBoot2Docker VM: पर बनाना होगा boot2docker ssh "mkdir -p /foo/bar && chown -R docker /foo/bar"
  6. Boot2Docker VM में फ़ाइलों को सिंक करने के लिए rsync चलाएँ rsync --archive --rsh="ssh -i $HOME/.ssh/id_boot2docker -o StrictHostKeyChecking=no" /foo/bar docker@dockerhost:/foo:। विभिन्न सेटिंग्स के लिए rsync डॉक्स की जांच करें जिन्हें आप सक्षम करना चाहते हैं, जैसे कि सिंक करते समय फ़ोल्डर --exclude .gitको बाहर करना .git
  7. फ़ाइलों को सिंक में रखने के लिए फ़ाइल वॉचर का उपयोग करें। उदाहरण के लिए, आप rsync में लगाए गए fswatch ( brew install fswatch) का उपयोग कर सकते हैं ।
  8. इस बिंदु पर, आपको docker runअपने डोकर कंटेनर को आग लगाने और उस -vध्वज का उपयोग करने में सक्षम होना चाहिए जो आपके द्वारा सिंक्रनाइज़ किए जा रहे फ़ोल्डर को माउंट करने के लिए है docker run -v /foo/bar:/src some-docker-image:।
  9. हमेशा की तरह OS X पर कोड अपडेट करें। परिवर्तनों को rsync का उपयोग करके बहुत तेज़ी से प्रचारित किया जाना चाहिए, सामान्य फ़ाइल वॉचर कोड को सामान्य (यानी, उपयोग inotify) के रूप में परिवर्तनों को उठाना चाहिए , और निर्माण तेजी से चलना चाहिए क्योंकि सभी फाइलें कंटेनर में "स्थानीय" हैं।
  10. यदि आपको एक रनिंग वेबसाइट का परीक्षण करने की आवश्यकता है, तो boot2docker ipयह पता लगाने के लिए कमांड चलाएं कि यह किस आईपी पर है।

साझा करने के लिए धन्यवाद! जब वे कहते हैं कि rsync "वन-वे केवल" है तो इसका मतलब है कि मैं दो कंटेनरों के बीच फ़ाइलों को साझा करने के लिए OS X फाइल सिस्टम का उपयोग नहीं कर सकता हूं? उदाहरण: कंटेनर 1 स्रोत फ़ाइलों को देखता है और एक बाइनरी संकलित करता है, संकलित बाइनरी को चलाने के लिए कंटेनर 2 का उपयोग किया जाता है (इस उदाहरण में हास्केल का उपयोग करके)।
निकोलस हेरी

1
@ नाइकोलाइसरी: मेरी समझ यह है कि rsync OS X से डॉकटर कंटेनर में बदलावों को कॉपी करेगा, लेकिन दूसरे तरीके से नहीं। इसलिए, डॉकर कंटेनर (जैसे संकलित बाइनरी) द्वारा उत्पन्न कोई भी फाइल ओएस एक्स में दिखाई नहीं देगी। हालांकि, अगर वे फाइलें एक फ़ोल्डर में उत्पन्न होती हैं VOLUME, तो आप उस वॉल्यूम का उपयोग करके एक और कंटेनर एक्सेस दे सकते हैं। --volumes-fromझंडा। मैंने अभी तक कोशिश नहीं की है, लेकिन मुझे संदेह है कि यह काम करेगा।
येवगेनी ब्रिकमैन

1
बहुत बढ़िया जवाब। आप docker- मशीन ( github.com/docker/machine ) के लिए एक ड्राइवर बना सकते हैं जो आपके लिए अधिकांश बॉयलरप्लेट करता है।
डोम

1
@dom: मुझे यह विचार पसंद है, लेकिन क्या आप जानते हैं कि docker-machine के लिए ड्राइवर कैसे बनाया जाता है? क्या रेपो में एक पुल का अनुरोध एकमात्र तरीका है या क्या बाहरी रूप से ड्राइवर बनाना संभव है?
येवगेनी ब्रिकमैन

1
क्या यह ट्यूटोरियल अभी भी विंडोज पर एक नए 1.9.1 संस्करण के लिए मान्य है? क्या मैं इसका उपयोग कर सकता हूं या हो सकता है कि डॉकटर के पास पहले से ही इस "समस्या" का एक नया समाधान हो?

18

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

नहीं है । मुझे पता है कि वह उत्तर नहीं है जिसकी आप शायद उम्मीद कर रहे हैं, लेकिन स्थानीय स्रोत कोड + dockerized निष्पादन बनाम OSX पर स्थानीय विकास करने की कोशिश करने की लागत / लाभ का एक ईमानदार मूल्यांकन करें।

कुछ बिंदु पर सभी मुद्दों, सेटअप प्रयास, और परिचालन दर्द बिंदुओं को काफी अच्छी तरह से हल किया जा सकता है, लेकिन अभी इस पर मेरा ध्यान रखना एक शुद्ध नुकसान है।

समस्या # 1: वर्चुअल बॉक्स पर माउंट किए गए वॉल्यूम (जो vboxfs का उपयोग करते हैं) बेहद धीमी हैं

थोड़ी देर प्रतीक्षा करें और यह लगभग निश्चित रूप से सुधार होगा।

अंक # 2: फ़ाइल देखना टूट गया है

मुझे यकीन नहीं है कि यह निकट भविष्य में होगा। यदि इस प्रकार की कार्यक्षमता आपके विकास वर्कफ़्लो के लिए महत्वपूर्ण है, तो मैं इस पर विचार करूंगा। यह एक प्रमुख R & D प्रयास के लायक नहीं है, जब तुलना में सिर्फ अपने jekyll / माणिक इंस्टॉल को प्रबंधित करने के लिए rbenv / बंडलर का उपयोग करके और उन्हें स्थानीय रूप से OSX पर चला रहे हैं जैसे कि पिछले एक दशक से लोग सफलतापूर्वक कर रहे हैं।

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


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

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

क्या आप आज भी इस उत्तर को वैध मानते हैं, पीटर? बस कुछ ही महीने लाइन में है, लेकिन @ येवगेनी की परियोजना और सिर्फ 2 मुद्दे दिए गए हैं जो अब तय हो गए हैं, शायद लागत / लाभ अब पहले से ही चिंताजनक है! है ना?
cregox

1
यह व्यक्तिगत प्राथमिकता वाली बात है। मैं अभी भी इस वजह से गड़बड़ नहीं करूंगा क्योंकि मैं एक सलाहकार के रूप में परियोजनाओं की भारी मात्रा की उम्मीद करता हूं। यदि मैं एक पूर्ण-टाइमर काम कर रहा था ज्यादातर एक ही परियोजना पर हफ्तों / महीनों के लिए, यह rsync / fswit सामान स्थापित करने के लायक हो सकता है।
पीटर लियोन

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

12

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

  • तेजी से और अधिक विश्वसनीय: कोई और अधिक VirtualBox! डॉक इंजन मैक ओएस एक्स पर या विंडोज पर हाइपर-वी वीएम पर एक xhyve वर्चुअल मशीन के शीर्ष पर एक अल्पाइन लिनक्स वितरण में चल रहा है, और यह कि वीएम को डॉकर एप्लिकेशन द्वारा प्रबंधित किया गया है। मैक और विंडोज के लिए डॉकर को चलाने के लिए आपको डॉकटर-मशीन की जरूरत नहीं है।
  • उपकरण एकीकरण: मैक के लिए डॉकर मैक एप्लिकेशन है और विंडोज के लिए डॉकर एक विंडोज एप्लिकेशन है, जिसमें एक देशी उपयोगकर्ता इंटरफ़ेस और ऑटो-अपडेट क्षमता शामिल है। Docker टूल सेट इसके साथ बंडल हो जाता है: Docker कमांड लाइन, Docker Compose, और Docker Notary कमांड लाइन।
  • आपके कोड और डेटा के लिए वॉल्यूम बढ़ते: वॉल्यूम डेटा एक्सेस सही तरीके से काम करता है, जिसमें फाइल चेंज नोटिफिकेशन भी शामिल हैं (मैक इनॉटिफाई अब वॉल्यूम माउंटेड डायरेक्ट्रीज़ के लिए कंटेनरों के अंदर काम करता है)। यह "कंटेनर में" विकास के लिए चक्रों को संपादित / परीक्षण करने में सक्षम बनाता है।
  • स्थानीय होस्ट नेटवर्क पर कंटेनरों को चलाने के लिए आसान पहुंच: मैक और विंडोज के लिए डॉकर में कंटेनर के लिए एक DNS सर्वर शामिल है, और मैक ओएस एक्स और विंडोज नेटवर्किंग सिस्टम के साथ एकीकृत है। एक मैक पर, डॉकर का उपयोग तब भी किया जा सकता है जब बहुत ही प्रतिबंधक कॉर्पोरेट वीपीएन से जुड़ा हो।
  • मैक के लिए डॉकर को ओएस एक्स सैंडबॉक्स सुरक्षा मॉडल को फिट करने में सक्षम होने के लिए खरोंच से आर्किटेक्चर किया गया था और हम इसे प्राप्त करने के लिए ऐप्पल के साथ मिलकर काम कर रहे हैं।

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

4
दुर्भाग्य से वर्तमान बीटा संस्करण (1.11.0-beta7) अन्य तरीकों के रूप में बस के रूप में धीमी गति से होने के लिए है, जबकि जब तक इस प्रयोग व्यवहार्य है, इसलिए यह एक समय लग सकता है लगता है forums.docker.com/t/...
walterra

3

डिस्क्लेमर: मैं पक्षपाती हो सकता हूं, क्योंकि मैं डॉक-सिंक का लेखक हूं।

मैंने शायद यहां दिए गए सभी समाधानों की कोशिश की, जिसमें कुछ और भी शामिल हैं (देखें संकलन https://github.com/EugenMayer/docker-sync/wiki/Alternatives-to-docker-sync ), लेकिन वे मूल रूप से विफल रहे प्रदर्शन (उनमें से अधिकांश) या docker- मशीन (या कोई नहीं) का उपयोग / लागू किया गया।

http://docker-sync.io सभी समाधानों को मर्ज करने और सर्वोत्तम रणनीति प्रदान करने के लिए बनाया गया है (कई को लागू करना, आप चुन सकते हैं)।

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

प्रदर्शन EugenMayer / docker-सिंक / wiki / 4.-प्रदर्शन प्रभावित नहीं है, यह ऐसा है जैसे आपके पास कोई शेयर नहीं है।

डॉक-सिंक और इसके परिवर्तन पर नजर रखने वालों को अनुकूलित किया जाता है और बिना मुद्दों के 12k फाइलों वाली परियोजनाओं के साथ काम किया जाता है।

यह एक कोशिश दे, अगर आप की तरह, मैं प्रतिक्रिया सुनने के लिए प्यार होता!


2

मैं समझ सकता हूँ! मुझे लगता है कि मैंने आपकी कोशिश की हर चीज की बहुत कोशिश की है और दुर्भाग्य से यह अभी भी धीमी थी। तब मुझे यह टिप्पणी आई। https://github.com/boot2docker/boot2docker/issues/64#issuecomment-70689254, जो वैग्रंट और समानताएं और वर्चुअलबॉक्स के बजाय सुझाव देता है। इससे मुझे nfs का उपयोग करने की अनुमति मिली और मैंने वास्तव में अपनी परियोजना (Drupal) के लिए एक बड़ा प्रदर्शन को बढ़ावा दिया।

यहाँ Vagrant फ़ाइल है। आपको केवल योनि स्थापित करने की आवश्यकता है, इसे वैग्रांटफाइल नामक फ़ाइल में कॉपी करें और इसे किसी फ़ोल्डर में डालें। उस फ़ोल्डर पर जाएं और vagrant upअपने सामान्य बूट 2 डॉक अप के बजाय बस करें ।

Vagrant.configure(2) do |config|
  config.vm.box = "parallels/boot2docker"

  config.vm.network "forwarded_port", guest: 80, host: 80

  config.vm.synced_folder(
    "/Users/dicix/work/www", "/vagrant",
    type: 'nfs',
    nfs_udp: true,
    mount_options: %w[actimeo=2],
    bsd__nfs_options: %w[alldirs maproot=root:wheel]
  )
end

मुझे लगता है कि यह एक समानताएं स्थापित करने की आवश्यकता है?
येवगेनी ब्रिकमैन

2

मैं भी समानताएं और boot2docker ( https://github.com/Parallels/boot2docker-vagrant-box ) के साथ वैगरेंट का उपयोग कर रहा हूं । मेरे लिए विकास कभी आसान नहीं था। वास्तव में अच्छी तरह से docker-composeऔर बड़े सेटअप के साथ काम करता है । मैं वास्तव में देरी या बड़े पैमाने पर संसाधन की खपत महसूस नहीं करता हूं।

यह मेरी Vagrantfileतरह दिखता है:

Vagrant.configure(2) do |config|

  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.box = "parallels/boot2docker"

  config.vm.synced_folder "/Users", "/Users", type: "nfs", mount_options: ["nolock", "vers=3", "udp"], id: "nfs-sync"

end

1

मैं अब कुछ हफ्तों के लिए OS X (मिड 2011 मैकबुक एयर) + बूट 2 डॉक + डॉकर-कम्पोज पर्यावरण में विकसित कर रहा हूं। प्रमुख प्रदर्शन के मुद्दों में भाग नहीं है, लेकिन मैं किसी भी प्रकार के निर्माण को चलाने से बचता हूं जब विकासशील (जैसे कुछ का उपयोग क्यों न करें jekyll serve --skip-initial-build?)। यहाँ एक उदाहरण docker-compose.ymlफ़ाइल का उपयोग कर रहा हूँ:

डोकर-compose.yml:

test:
  build: .
  volumes:
    - ./client:/src/client
    - ./server:/src/server
    - ./test:/src/test
  command: nodemon --exec jasmine-node -- test/ --verbose --autotest --captureExceptions --color
  environment:
    - DEBUG=*

Dockerfile:

FROM node:0.12

RUN mkdir -p /src
WORKDIR /src

ENV PATH=/src/node_modules/.bin:$PATH

# We add package.json first so that we the
# image build can use the cache as long as the
# contents of package.json hasn't changed.

COPY package.json /src/
RUN npm install --unsafe-perm

COPY . /src

CMD [ "npm", "start" ]
EXPOSE 3000

मैं कभी-कभी NFS ( http://syskall.com/use-boot2docker-using-nfs-instead-of-vboxsf/ ) का उपयोग करता हूं, लेकिन ऐसा करते समय बड़े प्रदर्शन अंतर पर ध्यान नहीं दिया।

मेरे लिए, docker-compose up testमेरे पर्यावरण को चलाने के लिए एक सरल की सुविधा प्रदर्शन में लागत के लायक है (मैं अलग-अलग स्टैक के साथ कई परियोजनाओं पर नियमित रूप से काम करता हूं)।

PS: nodemonउन कुछ फ़ाइल देखने वालों में से एक है जो vboxsf के साथ काम करते हैं (देखें https://github.com/remy/nodemon/issues/419 )।


यहां तक ​​कि अगर मैं Jekyll के साथ शुरुआती बिल्ड को छोड़ देता हूं, तो हर बार जब मैं एक फ़ाइल बदलता हूं, तो उसे पुनर्निर्माण करना होगा, जो स्रोत कोड माउंट होने पर 1-3 मिनट के आदेश पर अभी भी लेता है। यह किसी भी प्रकार के परिवर्तन और पुनः लोड शैली के विकास को असंभव बनाता है।
येवगेनी ब्रिकमैन

@ YevgeniyBrikman ओह, मुझे इस बात की जानकारी नहीं थी :( मुझे लगता है कि अंतिम विकल्प आपके कोड को boot2docker VM के अंदर रहना होगा और इसे sshfs का उपयोग करके अपने मेजबान मशीन पर माउंट करना होगा। अन्यथा, मुझे लगता है कि आपको इंतजार करना होगा। डॉक को देव माहौल के रूप में उपयोग करने के लिए बेहतर माउंटेड फोल्डर प्रदर्शन।
ओलिवियर लालोंडे


-1

एक विकास उपकरण के रूप में काम करने के लिए डॉकटर प्राप्त करना संभव है। लेकिन इसका नुकसान होने वाला है। मैंने यहां प्रक्रिया का दस्तावेजीकरण किया है:

http://harmingcola.blogspot.com/2015/05/how-to-setup-docker-as-development-tool.html


पोस्ट करने के लिए धन्यवाद, लेकिन यह माउंटेड वॉल्यूम के साथ प्रदर्शन के मुद्दों को कैसे हल करता है?
येवगेनी ब्रिकमैन

आह, क्षमा करें, अब आपको कुछ भी माउंट करने के लिए vBox का उपयोग नहीं करना होगा। आप नियमित रूप से
डॉक

-4

यह विधि मैक पर डॉकर सेटअप प्राप्त करने के लिए नवीनतम (सितंबर 2015) और सबसे आसान तरीका है: यहां लिंक:

आप यहां निर्देशों के लिए डॉकर टूलबॉक्स लिंक का उपयोग कर डॉकटर स्थापित करते हैं:

यह एक पूर्ण डॉकर सेटअप पैकेज है, जिसमें निम्नलिखित डॉकर उपकरण शामिल हैं:

डॉक-मशीन बाइनरी चलाने के लिए डॉकर मशीन

डॉक बाइनरी को चलाने के लिए डॉकर इंजन

डॉकटर कम्पोज़ बाइनरी चलाने के लिए लिखें

किटैमैटिक, डॉकर जीयूआई एक गोदी कमांड-लाइन वातावरण के लिए पूर्वनिर्मित है

Oracle VM VirtualBox

यहां छवि विवरण दर्ज करें

टूलबॉक्स में क्या है:

  • डॉकर क्लाइंट
  • डॉकर मशीन
  • डॉकर कम्पोज (केवल मैक)
  • डॉकटर किटेमैटिक
  • VirtualBox

3
हां, लेकिन दुर्भाग्य से मूल रूप से प्रस्तुत समस्या का समाधान नहीं हुआ।
निक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.