डॉकटर कंटेनर में अधिक मेमोरी कैसे असाइन करें


117

जैसा कि शीर्षक में लिखा है, मैं अपने कंटेनर में अधिक मेमोरी असाइन करने का प्रयास कर रहा हूं। मैं प्रासंगिक होने के मामले में "aallam / tomcat-mysql" नामक docker हब से एक छवि का उपयोग कर रहा हूं।

जब मैं इसे बिना किसी विशेष झंडे के सामान्य रूप से शुरू करता हूं, तो 2GB की मेमोरी सीमा होती है (भले ही मैंने पढ़ा हो कि मेमोरी सेट नहीं है, तो अनबाउंड है)

यहां मेरे डॉकटर आँकड़े हैं

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
ba57d6c9e9d2        0.22%               145.6 MiB / 1.952 GiB   7.29%               508 B / 508 B       0 B / 6.91 MB       68

मैंने मेमोरी को स्पष्ट रूप से सेट करने की कोशिश की लेकिन उसी परिणाम के साथ

docker run -d --memory=10g --memory-swap=-1 -e MYSQL_PASSWORD=password -p 3307:3306 -p 8081:8080 aallam/tomcat-mysql

मैंने पढ़ा है कि शायद VM ही इसे प्रतिबंधित कर रहा है। लेकिन फिर डॉकटर आँकड़े क्यों दिखाते हैं कि कंटेनर का आकार सीमा 2GB है?

जवाबों:


203

2GBआप जो सीमा देखते हैं, वह VM की कुल मेमोरी है जिसमें docker चलता है।

यदि आप docker-for-windows या docker-for-mac का उपयोग कर रहे हैं, तो आप इसे आसानी से टास्क बार में व्हेल bar आइकन से बढ़ा सकते हैं, फिर प्राथमिकताएं -> उन्नत पर जाएं:

डॉकर प्रेफरेंस

लेकिन अगर आप पीछे VirtualBox का उपयोग कर रहे हैं, तो VirtualBox खोलें, चयन करें और docker- मशीन असाइन की गई मेमोरी को कॉन्फ़िगर करें।

मैक के लिए इसे देखें:

https://docs.docker.com/docker-for-mac/#memory

मेमोरी डिफ़ॉल्ट रूप से, मैक के लिए डॉकर 2 जीबी रनटाइम मेमोरी का उपयोग करने के लिए सेट है, जो आपके मैक पर कुल उपलब्ध मेमोरी से आवंटित किया गया है। यदि आप मैक को कम मेमोरी का उपयोग करना चाहते हैं, तो आप इस नंबर को उच्चतर (उदाहरण के लिए 3) या निम्न (1) सेट करके तेज़ प्रदर्शन प्राप्त करने के लिए ऐप पर रैम बढ़ा सकते हैं।

विंडोज के लिए:

https://docs.docker.com/docker-for-windows/#advanced

मेमोरी - विंडोज लिनक्स वीएम का उपयोग करने के लिए मेमोरी की मात्रा को डॉकर में बदलें


72
बिना गाई के कैसे करते हैं?
फिलिप 12

13
@Philippe, आपका उपयोग मामला क्या है? मैक के लिए विंडोज या डॉकटर के लिए डॉकर गुली के साथ आता है। मुझे लगता है कि आपके मामले को लिनक्स (बिना किसी वर्चुअल मशीन के, जो कि प्रोडक्शन सिस्टम / क्लाउड के मामले में है) पर देशी डॉक किया जाता है। ऐसे मामलों में आपको वीएम मेमोरी को सेट करने की आवश्यकता नहीं है क्योंकि डॉक में इसके उपयोग के लिए होल मशीन है।
रॉबर्ट

10
हाँ, मुझे लगा कि बाद में पता चलेगा। इसलिए अगर मैं चाहता हूं कि मेरे डॉकटर कंटेनर में> 4GB RAM हो तो मुझे कुछ भी करने की जरूरत नहीं है अगर मैं लिनक्स पर विकसित करूं?
फिलिप

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

2
@SiddharthPant, लिनक्स बॉक्स पर सीधे चलने वाला डॉक्यूमर उतना ही इस्तेमाल करेगा, जितनी मेमोरी उपलब्ध हो, इसलिए फिशिकल के अलावा कोई सीमा नहीं है।
रॉबर्ट

21

अपने docker मशीन से अधिकतम मेमोरी आवंटित करें (docker वरीयता -> अग्रिम)

अग्रिम सेटिंग्स का स्क्रीनशॉट: अग्रिम सेटिंग्स का स्क्रीनशॉट।

यह कंटेनर चलाते समय अधिकतम सीमा वाले डॉक का उपभोग करेगा। अब अपनी छवि को नए कंटेनर में -m = 4g फ्लैग के लिए 4 gigs ram या अधिक से चलाएं। जैसे

docker run -m=4g {imageID}

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


17

यदि आप डिफ़ॉल्ट कंटेनर को बदलना चाहते हैं और आप वर्चुअलबॉक्स का उपयोग कर रहे हैं, तो आप इसे कमांडलाइन / सीएलआई के माध्यम से कर सकते हैं:

docker-machine stop
VBoxManage modifyvm default --cpus 2
VBoxManage modifyvm default --memory 4096
docker-machine start
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.