डॉकर त्रुटि: डिवाइस पर कोई स्थान नहीं बचा है


329

मैंने निम्नलिखित तरीके से डेबियन 7 मशीन पर डॉकटर स्थापित किया

$ echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh

उसके बाद जब मैंने पहली बार एक इमेज बनाने की कोशिश की तो यह निम्न त्रुटि के साथ विफल हो गया

 time="2015-06-02T14:26:37-04:00" level=info msg="[8] System error: write /sys/fs/cgroup/docker/01f5670fbee1f6687f58f3a943b1e1bdaec2630197fa4da1b19cc3db7e3d3883/cgroup.procs: no space left on device"

यहाँ docker की जानकारी दी गई है

Containers: 2
Images: 21
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 25
Dirperm1 Supported: true
Execution Driver: native-0.2
Kernel Version: 3.16.0-0.bpo.4-amd64
Operating System: Debian GNU/Linux 7 (wheezy)
CPUs: 2
 Total Memory: 15.7 GiB


WARNING: No memory limit support
 WARNING: No swap limit support

मैं मेमोरी कैसे बढ़ा सकता हूं? सिस्टम कॉन्फ़िगरेशन कहाँ संग्रहीत हैं?

काल के सुझावों से:

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


1
कभी-कभी, आप अपने भंडारण बैकएंड के आधार पर प्रति-कंटेनर आकार सीमा को मार सकते हैं । यह लिंक दिखाता है कि इसे डेविसेमर के लिए कैसे ठीक किया जाए।
jpaugh

4
जब मेरी डिस्क इनोड से बाहर थी, तो मुझे यह त्रुटि हुई। चेकdf -ih
केविन स्मिथ

@KevinSmyth इसे इंगित करने के लिए बहुत बहुत धन्यवाद। मुझे इससे पहले इनोड सीमा के महत्व के बारे में भी जानकारी नहीं थी।
yosefrow

जवाबों:


337

मेरे पास एक ही त्रुटि थी और इसे इस तरह हल करें:

1 है। डॉकर में अनाथ संस्करणों को हटा दें, आप अंतर्निहित डॉक वॉल्यूम कमांड का उपयोग कर सकते हैं। अंतर्निहित कमांड भी किसी भी निर्देशिका को / var / lib / docker / वॉल्यूम में हटा देता है जो वॉल्यूम नहीं है इसलिए सुनिश्चित करें कि आपने वहां कुछ भी नहीं डाला है जिसे आप सहेजना चाहते हैं।

यदि आप कुछ डेटा रखना चाहते हैं, तो इसके लिए चेतावनी बहुत सावधान है

साफ - सफाई:

$ docker volume rm $(docker volume ls -qf dangling=true)

अतिरिक्त आदेश:

झूलने वाले संस्करणों की सूची बनाएं:

$ docker volume ls -qf dangling=true

सभी संस्करणों की सूची बनाएं:

$ docker volume ls

२। सभी अप्रयुक्त छवियों को हटाने पर भी विचार करें।

पहले <none>छवियों से छुटकारा पाएं (जो कभी-कभी एक छवि बनाते समय उत्पन्न होती हैं और यदि किसी कारण से छवि निर्माण बाधित हो गया था, तो वे वहां रहते हैं)।

यहाँ एक अच्छी स्क्रिप्ट है जिसका उपयोग मैं उन्हें हटाने के लिए करता हूँ

docker rmi $(docker images | grep '^<none>' | awk '{print $3}')

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

आप उन्हें हटाने या मैन्युअल रूप से निकालने के लिए उपरोक्त स्क्रिप्ट को संपादित कर सकते हैं

docker rmi {image-name}


23
बस एक नोट: एक मैक पर awk कमांड को सिंगल कोट्स के साथ घेरना चाहिए, न कि डबल, अन्यथा इसे सिर्फ नजरअंदाज कर दिया जाता है।
ndtreviv

2
मैं पर हूँ MAC और यह मेरे लिए काम कर रहा है !! लेकिन सलाह के लिए धन्यवाद।
महमूद ज़ाल्ट

2
कितना अजीब है! यह मेरे लिए काम नहीं करता है। बस grep के समान परिणाम प्रिंट करता है। ठीक है। अजीब चीजें हुई हैं।
ndtreviv

3
इस बिंदु पर, आप छवियों के लिए उसी फ़िल्टर का उपयोग कर सकते हैं। docker images -qf dangling=trueऔर निश्चित रूप से उन्हें हटा दें docker rmi $(docker images -qf dangling=true)
टायलर जोन्स

3
मुझे एक त्रुटि मिलती है: "docker वॉल्यूम rm" के लिए कम से कम 1 तर्क (s) की आवश्यकता होती है।
इगोरगानापोलस्की

330

अद्यतन
नीचे दिए गए आदेश हैक हो गए हैं क्योंकि डॉकर अधिक विकसित हो गया है। वर्तमान सबसे अच्छा अभ्यास है

docker system prune

यह हटा देगा:

- all stopped containers
- all volumes not used by at least one container
- all networks not used by at least one container
- all dangling images

नीचे के रूप में, यह परमाणु है।


अपने सिस्टम को साफ करने के लिए, पहले कंटेनरों को हटा दें

$ docker rm $(docker ps -aq)

फिर छवियों को हटा दें

$ docker rmi $(docker images -q)

यह निश्चित रूप से परमाणु है और सभी कंटेनरों और सभी छवियों को हटा देगा। आप उन्हें समय पर docker rm #CONTAINER_ID#और के माध्यम से निकाल सकते हैं docker rmi #IMAGE_ID


2
जैसा कि केविन स्माइथ ने बताया है, यह त्रुटि आपके द्वारा इनोड्स से बाहर निकलने के कारण है, जिसे आप देख सकते हैं df -ih। अधिक शल्यचिकित्सा के निदान के लिए, ncduफिर फाइल काउंट करने के लिए c और फाइल काउंट को सॉर्ट करने के लिए c दबाएं, जो आपके सभी इनोड का उपयोग कर रहा है। यदि समस्या वास्तव में docker की है तो यह सबसे inodes का उपयोग करके निर्देशिकाओं द्वारा तुरंत स्पष्ट हो जाएगा।
yosefrow

2
वास्तव में यह मतदान होना चाहिए और इसका उत्तर दिया जाना चाहिए, क्योंकि यह सही दृष्टिकोण है। भवन के लिए पर्यावरण प्रदूषित हो गया और अब यहां हैक हो गया है और इसे अस्थायी रूप से ठीक किया जा सकता है, लेकिन उचित तरीका होना चाहिएdocker system prune
zhist

@ ब्रिस्ट हाहा मैं सहमत हूँ
यहोशू कुक

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

@JoshuaCook यह वास्तव में एक बहुत ही सामान्य मुद्दा है: वास्तविक समाधान के बिना github.com/docker/for-win/issues/1042 । बस इसके मूल कारण को पाने की कोशिश कर रहा है और यह बहुत निराशाजनक है। :(
कोलर-जे

70

जांचें कि आपके पास / var पर खाली स्थान है क्योंकि यह वह जगह है जहां डॉकर डिफ़ॉल्ट रूप से (/ / var / lib / docker) छवि फ़ाइलों को संग्रहीत करता है।

docker ps -aसभी कंटेनरों (बंद किए गए सहित) को सूचीबद्ध करने और docker rmउन्हें हटाने के लिए उपयोग करके पहले साफ सामान ; फिर docker imagesआपके द्वारा संग्रहीत सभी चित्रों को सूचीबद्ध करने और docker rmiउन्हें हटाने के लिए उपयोग करें।

अगला डॉकटर डेमन पर एक -g विकल्प के साथ या एडिट करके /etc/default/dockerऔर -gविकल्प जोड़कर स्टोरेज लोकेशन को बदलें DOCKER_OPTS-g"डॉकर रनटाइम" के स्थान को निर्दिष्ट करता है जो मूल रूप से सभी सामान है जो डॉकर बनाता है जैसा कि आप छवियों का निर्माण करते हैं और कंटेनर चलाते हैं। बहुत सारे स्थान के साथ एक स्थान चुनें क्योंकि प्रयुक्त डिस्क स्थान समय के साथ बढ़ने लगेगा। यदि आप संपादित करते हैं /etc/default/docker, तो आपको परिवर्तन को प्रभावी करने के लिए docker daemon को पुनः आरंभ करना होगा।

अब आपको एक नई छवि बनाने में सक्षम होना चाहिए (या डॉकर हब से एक को खींचना) और आपको -g विकल्प के साथ निर्दिष्ट निर्देशिका में बनाई गई फ़ाइलों का एक गुच्छा देखना चाहिए।


धन्यवाद कल, मुझे DOCKER_OPTS पर प्रलेखन नहीं मिला। -G विकल्प का क्या अर्थ है और इसे किस पर सेट किया जाना चाहिए? क्या docker / aufs / mnt के तहत सामान को हटाया जा सकता है?
user_mda

हे माणिक, मुझे नहीं लगता कि मुझे कभी DOCKER_OPTS के बारे में एक वास्तविक दस्तावेज़ मिला, लेकिन दस्तावेज़ों में यहाँ और वहाँ जगह हैं जो इसे संपादित करने के बारे में बात करते हैं। निकटतम मैं पा सकता है docs.docker.com/installation/ubuntulinux/… के अंत में जहां यह DOCKER_OPTS में DNS सेटिंग्स को संपादित करने के बारे में बात करता है। DOCKER_OPTS में विकल्प सिर्फ डेमॉन को दिए जाते हैं, इसलिए उसके लिए संदर्भ docs.docker.com/reference/commandline/cli/#daemon है । -g "डॉकर रनटाइम" का आधार स्थान निर्धारित करता है
कल

क्या docker / aufs / mnt के तहत सामान को हटाया जा सकता है?
user_mda

उस सामान को मैन्युअल रूप से न हटाएं। इसके बजाय किसी भी कंटेनर (बाहर वाले सहित) और छवियों को हटाएं जिनकी आपको आवश्यकता नहीं है। -G विकल्प बदलने से पहले आपको यह करना चाहिए। का प्रयोग करें docker ps -a(से बाहर निकल गया लोगों सहित) सभी कंटेनरों को सूचीबद्ध करने के लिए और फिर docker rmउन्हें हटाने के लिए। का प्रयोग करें docker imagesसभी छवियों को सूचीबद्ध करने के लिए और फिर docker rmiउन्हें हटाने के लिए। उम्मीद है कि सब कुछ (या अधिकांश चीजें) को साफ करना चाहिए।
काल

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

37

जैसा कि पहले ही उल्लेख किया,

docker system prune

मदद करता है, लेकिन डॉकटर 17.06.1 और बाद में अप्रयुक्त संस्करणों को छोड़े बिना। डॉकर 17.06.1 के बाद, निम्नलिखित कमांड वॉल्यूम की भविष्यवाणी करता है:

docker system prune --volumes

डॉकर प्रलेखन से: https://docs.docker.com/config/pruning/

Docker system prune कमांड एक शॉर्टकट है जो छवियों, कंटेनरों और नेटवर्क को प्रून करता है। डॉकर 17.06.0 और पहले के संस्करणों में भी छंटनी की जाती है। डॉकर 17.06.1 और उच्चतर में, आपको वॉल्यूम वॉल्यूम को प्रून वॉल्यूम के लिए --volumes ध्वज को निर्दिष्ट करना होगा।

यदि आप वॉल्यूम को चुभाना चाहते हैं और चित्र और कंटेनर रखना चाहते हैं:

docker volume prune

3
docker volume pruneआज मेरी मदद की जब यहाँ अन्य सभी समाधानों ने काम करना बंद कर दिया।
AVProgrammer

1
भारी मदद - त्रुटि को ठीक करने के अलावा, इसने मेरी हार्ड ड्राइव पर अंतरिक्ष के कई गिग्स को मुक्त किया।
मैट ब्राउन ने

29

अगर यह सिर्फ डॉकटर का परीक्षण संस्थापन है (अर्थात उत्पादन नहीं) और आप परमाणु स्वच्छ करने की परवाह नहीं करते हैं, तो आप कर सकते हैं:

सभी कंटेनरों को साफ करें: docker ps -a | sed '1 d' | awk '{print $1}' | xargs -L1 docker rm

सभी चित्र साफ़ करें: docker images -a | sed '1 d' | awk '{print $3}' | xargs -L1 docker rmi -f

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


1
मेरे boot2docker उदाहरण में मुझे कॉल करना था docker images -a | sed '1 d' | awk '{print $3}' | xargs docker rmi -f। OS X BSD संस्करण बूट 2docker के संस्करण के विपरीत, विकल्प का xargsसमर्थन करता है -L
orluke

1
आप docker ps -a -qपाठ जोड़तोड़ से बचने के लिए आदि का उपयोग कर सकते हैं , अर्थात् docker rm $(docker ps -a -q); docker rmi -f $(docker images -a -q)चाल करना चाहिए
निकल्स बी

21

सभी अप्रयुक्त कंटेनरों, संस्करणों, नेटवर्क और छवियों को एक साथ हटाने के लिए ( https://docs.docker.com/engine/reference/commandline/system_prune/#related-commands ):

docker system prune -a -f --volumes

यदि यह पर्याप्त नहीं है, तो कोई पहले कंटेनर को हटा सकता है:

docker rm -f $(docker ps -a -q)
docker system prune -a -f --volumes

बढ़ती / var / lib / docker या किसी अन्य स्थान का अधिक स्थान के साथ उपयोग करना भी इस त्रुटि से छुटकारा पाने का एक अच्छा विकल्प है (देखें कि docker छवि अधिष्ठापन निर्देशिका कैसे बदलें? )


docker system pruneवॉल्यूम नहीं निकालता है।
बोनीफैसियो 2

1
docker system prune -a -f --volumesसंस्करणों को हटा देगा।
जिमसन कन्ननथारा जेम्स

19

मैक के लिए डॉकर

इसलिए docker system pruneऔर docker system prune --volumesअन्य उत्तरों में सुझाव दिया गया कि हर बार कुछ जगह खाली कर दी जाए , लेकिन अंततः हर बार जब भी मैं कुछ भी करता था तो मुझे त्रुटि मिलती थी।

वास्तव में जो रूट समस्या तय की गई थी वह Docker.rawफ़ाइल को डिलीट कर रहा था जिसे मैक के लिए डॉकर स्टोरेज के लिए उपयोग करता है, और इसे पुनः आरंभ करता है।

उस फ़ाइल को खोजने के लिए मैक के लिए डॉकर खोलें और * पर जाएं

Preferences > Resources > Advanced > Disk Image Location

* यह 2.2.0.5 संस्करण के लिए है, लेकिन पुराने संस्करणों पर यह समान होना चाहिए

मैक ** के लिए डॉकर के नए संस्करणों पर, यह आपको यूआई में डिस्क पर उस फ़ाइल का वास्तविक आकार दिखाता है, साथ ही साथ इसका अधिकतम आवंटित आकार भी। आप शायद देखेंगे कि यह बड़े पैमाने पर है। मेरी मशीन पर उदाहरण के लिए यह 41GB था !

** पुराने संस्करणों पर, यह आपको UI में वास्तविक डिस्क उपयोग नहीं दिखाता है, और MacOS खोजक हमेशा फ़ाइल आकार को अधिकतम आवंटित आकार के रूप में दिखाता है। आप टर्मिनल में डायरेक्टरी को खोलकर और चलाकर डिस्क पर वास्तविक आकार की जांच कर सकते हैंdu -h Docker.raw

मैंने Docker.rawमैक के लिए डॉकर को फिर से डिलीट कर दिया , और फाइल अपने आप फिर से बन गई और 0GB की हो गई

सब कुछ पहले की तरह काम करता रहा, हालाँकि बेशक मैंने अपना डॉकर कैश खो दिया था। जैसा कि अपेक्षित था, कुछ डॉकर कमांड चलाने के बाद फ़ाइल को कुछ जीबी सामान के साथ फिर से भरना शुरू हो गया, लेकिन कहीं भी 41 जीबी के पास नहीं है


अपडेट करें

कुछ महीने बाद, मेरा Docker.rawफिर से एक समान आकार में वापस आ गया। तो इस विधि ने काम किया, लेकिन हर कुछ महीनों में दोहराया जाना चाहिए। मेरे लिए यह ठीक है।

यह क्यों काम करता है पर एक नोट - मुझे यह मानना ​​होगा कि यह मैक के लिए डॉकर में एक बग है। यह वास्तव में ऐसा लगता है docker system prune/ docker system prune --volumesइस फ़ाइल की सामग्री को पूरी तरह से साफ़ करना चाहिए, लेकिन ऐसा प्रतीत होता है कि फ़ाइल अन्य सामानों को जमा करती है जिन्हें इन आदेशों द्वारा हटाया नहीं जा सकता है। वैसे भी, इसे मैन्युअल रूप से हटाने से समस्या हल हो जाती है!


15

डॉकर आस-पास लटकती हुई छवियों को छोड़ देता है जो आपकी जगह ले सकती हैं। डॉकर के बाद साफ करने के लिए, निम्नलिखित चलाएं:

docker image prune [-af if you want to force remove all images]

या डॉकर के पुराने संस्करणों के साथ:

docker rm $(docker ps -q -f 'status=exited')
docker rmi $(docker images -q -f "dangling=true")

यह बाहर और झूलने वाली छवियों को हटा देगा, जो डिवाइस स्पेस को उम्मीद से साफ करता है।


14
  1. साफ खतरे वाली छवियां docker rmi $(docker images -f "dangling=true" -q)
  2. अवांछित मात्रा को हटा दें
  3. अप्रयुक्त छवियों को हटा दें
  4. अप्रयुक्त कंटेनरों को हटा दें

मेरे लिए, समस्या बहुत अधिक छवियों वाली थी। उन्हें साफ करने के बाद, डॉकटर फिर से काम करता है।
ट्रान ट्रेट

9

आप भी उपयोग कर सकते हैं:

docker system prune

या सिर्फ संस्करणों के लिए:

docker volume prune

7

मेरे मामले में ubuntu-server 18.04.1 की स्थापना [कुछ अजीब कारण से] 750GB के बजाय सिर्फ 4GB आकार में LVM तार्किक आयतन बनाया। इसलिए जब मैं छवियों को खींच रहा हूं तो यह "डिवाइस पर कोई स्थान नहीं छोड़ा" त्रुटि प्राप्त करेगा। फिक्स सरल है:

lvextend -l 100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

.. निम्नलिखित सूत्र में resize2fs के लिए मेरा चरण-दर-चरण विवरण देखें : stackoverflow.com/questions/32485723/…
एलेक्स

7

मुझे आरएचईएल मशीन पर भी इस मुद्दे का सामना करना पड़ा। मुझे स्टैक-ओवरफ्लो और डॉक-हब समुदाय पर कहीं भी कोई उपयुक्त समाधान नहीं मिला। यदि आप कमांड के बाद भी इस समस्या का सामना कर रहे हैं:

docker प्रणाली prune - लंबा

समाधान जो अंत में काम किया:

  1. docker जानकारी
    • वर्तमान docker संग्रहण ड्राइवर की जाँच करने के लिए
    • मेरा था: भंडारण चालक: डेविसेमर; यदि आपके पास भंडारण चालक है तो चिंता की कोई बात नहीं है। समाधान अभी भी आपके लिए काम करेगा।
  2. df -h
    • यह मशीन पर उपलब्ध फ़ाइल सिस्टम और उस पथ की जांच करना है जहां वे माउंट किए गए हैं। एक नोट रखने के लिए दो घुड़सवार मार्ग:
    • / dev / mapper / rootvg-var 7.6G 1.2G 6.1G 16% / var
    • / dev / mapper / rootvg-apps 60G 9.2G 48G 17% / ऐप्स
    • नोट - डिफ़ॉल्ट रूप से डोरक स्टोरेज पथ / var / lib / docker है। यह उपलब्ध अंतरिक्ष ~ 6 जीबी है और इसलिए सभी अंतरिक्ष से संबंधित मुद्दों। इसलिए मूल रूप से, मुझे डिफॉल्ट स्टोरेज को कुछ अन्य स्टोरेज पर ले जाना होगा, जहां उपलब्ध स्पेस अधिक हो। मेरे लिए इसकी फाइल sysyem पाथ '/ dev / mapper / rootvg-apps' जो कि / apps पर आरोहित है। अब कार्य को / apps / newdocker / docker की तरह / var / lib / docker को स्थानांतरित करना है।
  3. mkdir / apps / newdocker / docker
  4. chmod -R 777 / apps / newdocker / docker
  5. Linux पर docker.serive फ़ाइल अपडेट करें जो कि नीचे रहती है: / usr / lib / systemd / system
    • vi /usr/lib/systemd/system/docker.service
  6. अगर स्टोरेज डिवाइस डेविसेमर है, तो मौजूदा एक्सेस्टार्ट लाइन पर टिप्पणी करें और नीचे [सर्विस] जोड़ें।
    • ExecStart =
    • ExecStart = / usr / bin / dockerd -s devicemapper --storage- ऑप्ट dm.fs = xfs --storage-ऑप्ट dm.basesize = 40GB -g / apps / newdocker / docker --exec-opt native.cgroupdriver = cgroupfs
  7. या यदि संग्रहण डिवाइस ओवरले 2 है:
    • मौजूदा ExexStart स्टेटमेंट में सिर्फ -g / apps / newdocker / docker जोड़ें।
    • ExecStart = / usr / bin / dockerd -g / apps / newdocker / docker -H fd: // --containerd = / run / containerd / कंटेनd.sock जैसा कुछ
  8. rm -rf / var / lib / docker (यह सभी मौजूदा docker डेटा को हटा देगा)
  9. systemctl स्टॉप डॉकटर
  10. ps aux | grep- आई डूकर | grep -v grep
    • यदि उपरोक्त कमांड द्वारा कोई आउटपुट नहीं दिया गया है, तो नीचे दिए गए कमांड द्वारा सिस्टमड डेमॉन को फिर से लोड करें।
  11. systemctl डेमॉन-रीलोड
  12. systemctl प्रारंभकर्ता
  13. docker जानकारी
    • उपलब्ध डेटा स्पेस की जाँच करें: नई फ़ाइल प्रणाली के लिए डॉकिंग करने के बाद 62.15GB।
  14. किया हुआ

मैं यह कैसे प्राप्त करने के लिए डॉक्स पर सब देख रहा हूँ! धन्यवाद महोदय। क्या हम इसे उत्तरों में से एक के रूप में चिह्नित कर सकते हैं?
वुलगेंड


4

आपके cgroups के पास cpusetनियंत्रक सक्षम है। यह नियंत्रक NUMA वातावरण में अधिकतर उपयोगी है जहां यह निर्दिष्ट करता है कि कौन से CPU / मेमोरी बैंक को आपके कार्यों को चलाने की अनुमति है।

डिफ़ॉल्ट रूप से अनिवार्य cpuset.memsऔर cpuset.cpusसेट नहीं हैं जिसका अर्थ है कि आपके कार्य के लिए "कोई स्थान नहीं बचा है", इसलिए त्रुटि।

इसे ठीक करने का सबसे आसान तरीका cgroup.clone_childrenरूट cgroup में 1 को सक्षम करना है। आपके मामले में, यह होना चाहिए

echo 1 > /sys/fs/cgroup/docker/cgroup.clone_children

यह मूल रूप से सिस्टम को स्वचालित रूप से कंटेनर के प्रारंभिक cpuset.memsऔर cpuset.cpusउनके मूल cgroup से निर्देश देगा ।


1
यह सही जवाब है। वास्तव में डॉकटर को किसी भी चीज़ में अपग्रेड करना> = डॉकर 1.8 को हल करना चाहिए । यह github.com/opencontainers/runc/issues/133 से संबंधित है से । इस मुद्दे से, एक अन्य संभावित कार्य लगभग "हैecho 0 > /sys/fs/cgroup/cpuset/system.slice/cpuset.mems
cpuguy83

2

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

जब आप docker importएक नई छवि बनाते हैं या जोड़ते हैं, तो छवि की नकल हो जाती है, /mnt/sda1जो पूर्ण हो सकती है।

छवि में आपके पास कौन सा स्थान उपलब्ध है, यह जांचने का एक तरीका vm में ssh करना और दौड़ना df -hऔर शेष स्थान को / mnt / sda1 में जांचना है।

Ssh कमांड है docker-machine ssh default

एक बार जब आप यह सुनिश्चित कर लेते हैं कि यह वास्तव में एक अंतरिक्ष मुद्दा है, तो आप इस प्रश्न के कुछ उत्तरों में दिए निर्देशों के अनुसार या तो सफाई कर सकते हैं, या आप बूट 2docker छवि का आकार बदलने के लिए खुद का चयन कर सकते हैं। /mnt/sda1

छवि का आकार बदलने के लिए आप यहां दिए गए निर्देशों का पालन कर सकते हैं https://gist.github.com/joost/a7cfa7b741d9d39c1307


2

यदि आप डॉकर डेस्कटॉप का उपयोग कर रहे हैं, तो आप डॉकर के प्रेफरेंस पर जाकर एडवांस्ड सेटिंग्स में डिस्क इमेज का आकार बढ़ा सकते हैं

यहाँ macOS से स्क्रीनशॉट है:

MacOS, संसाधन, उन्नत, डिस्क छवि आकार पर डॉकटर डेस्कटॉप


1

यह 40GB (डिफ़ॉल्ट पथ, / var / lib / docker) के लिए निर्धारित डिफ़ॉल्ट संग्रहण स्थान के कारण हो सकता है

आप स्टोरेज वॉल्यूम को अलग-अलग पथ पर इंगित करने के लिए बदल सकते हैं

  • फ़ाइल संपादित करें -> / etc / sysconfig / docker-storage
  • नीचे पंक्ति अपडेट करें (यदि मौजूद नहीं है तो जोड़ें)

DOCKER_STORAGE_OPTIONS = '- संग्रहण-चालक = ओवरले --graph = CUSTOM_PATH'

  • डार्ट को व्यवस्थित करें

यदि आप कमांड डॉक जानकारी चलाते हैं (इसे स्टोरेज ड्राइवर को ओवरले के रूप में दिखाना चाहिए)


0

ऐसा लगता है कि कुछ तरीके हैं जो ऐसा हो सकता है। मेरा मुद्दा यह था कि डॉक डिस्क छवि ने अपने अधिकतम आकार को मारा था (डॉकर व्हेल -> प्राथमिकताएं -> डिस्क यदि आप देखना चाहते हैं कि ओएसएक्स में कौन सा आकार है)।

मैंने सीमा को छोड़ दिया और जाने के लिए अच्छा था। मुझे यकीन है कि अप्रयुक्त छवियों की सफाई भी काम करेगी।


0

मैं नीचे कमांड चलाता हूं।

बाद में छवियों को फिर से बनाने की कोई आवश्यकता नहीं है।

docker rm $(docker ps -qf 'status=exited')
docker rmi $(docker images -qf "dangling=true")
docker volume rm $(docker volume ls -qf dangling=true)

ये बाहर निकलने / झूलने वाले कंटेनरों और झूलने वाले संस्करणों को हटा देते हैं।


0

मेरे docker system pruneलिए चाल चली। मैं मैक ओएस चला रहा हूं।


यह वास्तव में मेरा भी काम किया, जब मैं मैक ओएस पर उपयोग किए जाने वाले स्थान को खाली करने की कोशिश कर रहा था। कमांड docker volume lsका उपयोग करने से कुछ भी नहीं लौट रहा था, इसलिए ऐसा लग रहा था कि भंडारण ज्यादातर कैश और लटकती छवियों द्वारा उपयोग किया गया था।
तुहिन

-3
$ docker rm $(docker ps -aq)

इसने मेरे लिए काम किया

docker system prune 

नवीनतम संस्करण के साथ बेहतर विकल्प प्रतीत होता है

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