डॉकर मशीन: डिवाइस पर कोई स्थान नहीं बचा


126

मैं डॉकर कंपोज के साथ डॉकटर मशीन स्थापित करने की कोशिश कर रहा हूं।

परिदृश्य 1 (डॉकर मशीन के बिना)
यदि मैं docker-compose up -dडॉकर मशीन के बिना चलता हूं , तो यह मेरे 3 जुड़े कंटेनरों को इंटेंटेड (nginx + mongodb + नोडज) के रूप में बनाता है।

परिदृश्य 2 (डॉकर मशीन के साथ)
फिर मैं डॉकर मशीन का उपयोग करके एक वीएम बनाता हूं और डॉकर को उस मशीन से बात करने के लिए कहता हूं eval $(docker-machine env streambacker-dev)

इस बिंदु पर, अगर मैं अपने docker मशीन को चलाऊं और चलाऊं, तो मुझे df -h:

docker मशीन df -h

अगर मैं दौड़ता docker-compose up -dहूं, तो मुझे आखिरी कंटेनर डाउनलोड करते समय "डिवाइस पर कोई स्थान नहीं बचा है" त्रुटि मिलती है ।

"tmpfs" उसके बाद वास्तव में थोड़ा भरा हुआ लगता है:

docker मशीन df -h

--Virtualbox-disk-size विकल्प की जाँच करने से पता चलता है कि यह 20000 MB तक डिफॉल्ट करता है, जो मुझे लगता है कि हम दोनों चित्रों पर "/ dev / sda1" के रूप में देख सकते हैं। तो क्यों कंटेनर "tmpfs" n भर रहे हैं और वास्तव में "tmpfs" क्या है? एक अस्थायी डाउनलोड निर्देशिका है? मैं अपने कंटेनरों के लिए अधिक स्थान कैसे बना सकता हूं?

धन्यवाद!

जानकारी के लिए, मैं डॉकर मशीन का उपयोग कर रहा हूं 0.4.0-rc2 और डॉकर कंपोज 1.3.2


4
इससे tmpfsकोई लेना-देना नहीं है --virtualbox-disk-size। यह एक फाइलसिस्टम है (RAM डिस्क की तरह) जो मेमोरी में लगा होता है और कुछ भी आपकी डिस्क तक नहीं पहुंच पाता है।
0x7d7b

धन्यवाद @ h3nrik उस जानकारी के लिए।
मार्क पेरिन-पेलेटियर

2
डॉकिंग के झूलने वाले सामान के साथ जांच करें, जैसे कि झूलते हुए चित्र, झूलते हुए वॉल्यूम और उन्हें हटा दें। docker rmi $(docker images -f dangling=true -q)औरdocker volume rm $(docker volume ls -f dangling=true -q)
जिन्ना बालू

जवाबों:


87

जैसा ऊपर कहा गया है, उससे tmpfsकोई लेना-देना नहीं है --virtualbox-disk-size। ऐसा लगता है कि boot2docker tmpfsमेमोरी में mounts है, इसलिए आपको अपने वर्चुअलबॉक्स vm को अधिक मेमोरी समर्पित करने की आवश्यकता है। आप इसे --virtualbox-memoryपैरामीटर निर्दिष्ट करके कर सकते हैं ।

   --virtualbox-memory "1024"
Size of memory for host in MB [$VIRTUALBOX_MEMORY_SIZE]

चूक:

$ docker-machine create --driver virtualbox testA
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testA
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@testA:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   896.6M    112.7M    783.9M  13% /

के साथ --virtualbox-memoryसेट किया गया8096

$ docker-machine create --driver virtualbox --virtualbox-memory 8096 testB
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
$ docker-machine ssh testB
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@testB:~$ df -h /
Filesystem                Size      Used Available Use% Mounted on
tmpfs                     6.9G    112.4M      6.8G   2% /

14
बहुत सहज नहीं है, लेकिन यह काम किया। क्या बिल्ली, डोकर?
बस्तीबेन

1
वास्तव में सहज नहीं है! हालाँकि, यह इस के साथ समस्या प्रतीत होती है और इसे मेरे लिए तय किया है। तो, +1।
रे पेंडरग्राफ

मेरे लिए भी समस्या का समाधान, मुझे समझ नहीं आ रहा है लेकिन, धन्यवाद!
बेंडिहोसन

डिफ़ॉल्ट आकार को बढ़ाने का कोई तरीका ताकि मुझे इसे हर बार मैन्युअल रूप से निर्दिष्ट न करना पड़े?
CGFoX

124

मेरे पास एक ही त्रुटि थी ( [ERROR] InnoDB: Error number 28 means 'No space left on device') और इसे इस तरह हल करें:

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}


3
मैक पर मुझे तर्क मूल्यों के आसपास एकल उद्धरण (') का उपयोग करना पड़ा docker rmi $(docker images | grep '^<none>' | awk '{print $3}'):। बंद किए गए कंटेनरों को हटाने का docker rm $(docker ps -qa --no-trunc --filter "status=exited")वर्णन यहां किया जा सकता है : stackoverflow.com/a/32723127/619659
वेबदेवी

1
मेरे पास बहुत सारी अप्रयुक्त छवियां थीं, मैं अपनी शेल की चरित्र सीमा तक पहुंच गया। इसलिए मैंने किया docker images | grep "^<none>" | xargs docker rmi
मथायस ब्रौन

1
मेरे लिए अनावश्यक छवियों को हटाने से मदद मिली।
उर्फुपी

docker volume prune
justin.m.chase

.. एक अन्य सूत्र में resize2fs का उपयोग करके / var / lib / docker का आकार बदलने के लिए मेरा चरण-दर-चरण विवरण देखें : stackoverflow.com/questions/32485723/…
एलेक्स

66

यदि आप डॉकर सामुदायिक संस्करण का उपयोग कर रहे हैं:

 docker system prune
 docker volume prune  # as suggested by @justin-m-chase since system prune does not clean volumes.

यदि आप boot2docker (docker- मशीन) का उपयोग कर रहे हैं, तो अनाथ किए गए वॉल्यूम को साफ़ करें:

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

अप्रयुक्त चित्र साफ़ करें:

 docker rmi $(docker images -q -f "dangling=true")

6
docker system pruneमेरी मदद की
मैक्सिम येफ्रेमोव

2
docker system pruneftw
माइकल गिल्ड

1
docker volume pruneसिर्फ वॉल्यूम के लिए, सिस्टम प्रून झूलने वाले वॉल्यूम को स्पष्ट नहीं करेगा।
justin.m.chase

जब ऊपर आपको पर्याप्त जगह नहीं मिलती है, तो यहां परमाणु विकल्प है docker rmi $(docker images -q):। जोड़े --forceयदि आप जब यह परतों कि कई कंटेनरों में शामिल किए गए हैं के एक समूह को छोड़ देता है चाहिए।
EmptyArsenal

14

A. रिमूव यूज्ड इमेजेज

docker rm या docker rmi कमांड का उपयोग करके आप उन इमेज को हटा सकते हैं जिनकी आपको आवश्यकता नहीं है। वास्तव में एक छवि मौजूद है जो इस कार्य (मार्टिन / डूकर-क्लीनअप-वॉल्यूम) में मदद करती है। आधार अपनी छवियों और कंटेनरों की सूची से सेलेग शुरू करना है:

docker ps -a -s

बी। डॉक्टर जोसन डेस्क्रिप्टर को मोडिफाई करें

कुछ मंचों में इसका उल्लेख है। यह विचार ~ / .docker / मशीन / मशीनों / डिफ़ॉल्ट / config.json में स्थित डिस्क्रिप्टर को बढ़ाने के लिए है। यह परम डिस्कसाइज़ लगता है लेकिन मुझे नहीं पता कि यह दूसरे ओएस में काम करता है (विंडोज़ में नहीं)।

सी। LINUX RESIZE:

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

D. डॉक्टर-मशीन / BOOT2DOCKER को पुनः प्राप्त करें

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

docker- मशीन आरएम डिफ़ॉल्ट

docker-machine create --driver virtualbox --virtualbox-disk-size "100100" default

docker- मशीन env डिफ़ॉल्ट

तब आप वर्चुअल बॉक्स पर जा सकते हैं और "df -h" कमांड के साथ boot2docker स्पेस देख सकते हैं।


धन्यवाद। मैं विंडोज पर काम कर रहा था। मैंने डॉकटर-मशीन को फिर से बनाकर बनाया।
KinoP

D की मदद की: (डॉकिंग मशीन को फिर से बनाना)
StanislavL

धन्यवाद, डॉकिंग-मशीन को फिर से बनाना मेरे लिए काम कर रहा है (मैं खिड़कियों पर हूँ)
लुचा लौरा हार्डी

मुझे बहुत प्यार लगता है!
eduyayo

2

Docker osx / I पर एक बटन दबाने में सक्षम था [ डिस्क छवि ले जाएँ ] और यह सफलतापूर्वक Docker.qcow2 चला गया (संभवतः कंटेनर / चित्र युक्त)

यहाँ छवि विवरण दर्ज करें शुरू में - जब मशीनें शुरू हुईं - मुझे अभी भी डिवाइस त्रुटि पर कोई स्थान नहीं बचा था, लेकिन कुछ ही समय बाद इसका समाधान हो गया।


0

मैं इस समस्या में भाग गया और मैक के लिए डॉक यूआई के साथ अतिरिक्त स्थान नहीं जोड़ सका, मैंने होमब्रे के साथ डॉकटर स्थापित किया और अपनी मशीन बनाते समय निम्नलिखित कमांड को चलाया:

docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default

यह मेमोरीबॉक्स और डिस्क साइज़ के लिए डबल स्पेस को वर्चुअलबॉक्स में जोड़ता है जो मेरे पास पहले था और आप यहां सेटिंग्स साइज जोड़ सकते हैं जो आपको फिट चाहिए

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