2016-12-19 7 views
6

मैं मैक-देशी डॉकर चला रहा हूं (कोई वर्चुअलबॉक्स/डॉकर-मशीन नहीं)।डॉकर में 'डिवाइस पर कोई स्थान नहीं छोड़ा गया' त्रुटि को मैं कैसे ठीक कर सकता हूं?

मेरे पास इसमें बहुत सारे बुनियादी ढांचे (पोस्टग्रेस इत्यादि) के साथ एक बड़ी छवि है। मैंने कई क्रुफ्ट - अप्रयुक्त छवियों और बहुत आगे से छुटकारा पाने के लिए क्लीनअप स्क्रिप्ट चलाई हैं। मेरे मेजबान मैक/var पर

could not create directory "/var/lib/postgresql/data/pg_xlog": No space left on device 

उपलब्ध 60% अंतरिक्ष में बैठा है और आम तौर पर मेरी डिस्क नि: शुल्क संग्रहण के बहुत सारे है:

जब मैं अपने छवि को चलाने मैं की तरह एक त्रुटि प्राप्त।

क्या यह कुछ डॉकर कॉन्फ़िगरेशन है जो मुझे अधिक संसाधन देने के लिए टक्कर देने की आवश्यकता है?

mount से प्रासंगिक लाइनों डोकर अंदर:

none on/type aufs (rw,relatime,si=5b19fc7476f7db86,dio,dirperm1) 
/dev/vda1 on /data type ext4 (rw,relatime,data=ordered) 
/dev/vda1 on /etc/resolv.conf type ext4 (rw,relatime,data=ordered) 
/dev/vda1 on /etc/hostname type ext4 (rw,relatime,data=ordered) 
/dev/vda1 on /etc/hosts type ext4 (rw,relatime,data=ordered) 
/dev/vda1 on /var/lib/postgresql/data type ext4 (rw,relatime,data=ordered) 

यहाँ df है:

[11:14] 
Filesystem  1K-blocks Used Available Use% Mounted on 
none   202054928 4333016 187269304 3%/
tmpfs   1022788  0 1022788 0% /dev 
tmpfs   1022788  0 1022788 0% /sys/fs/cgroup 
/dev/vda1  202054928 4333016 187269304 3% /data 
shm    65536  4  65532 1% /dev/shm 
tmpfs    204560  284 204276 1% /run/docker.sock 
+0

आप क्या देखते हैं अगर आप 'डोकर उदाहरण के अंदर रूट के रूप में mount' और' df' चला सकता हूँ? (इसे प्रश्न में जोड़ें) - हमें चल रहे कंटेनर के लिए 'डॉकर इंस्पेक्ट' आउटपुट के प्रासंगिक भाग भी दें। – slim

+0

ठीक है, इसलिए दिलचस्प हिस्सा यह है कि आपको '/ dev/vda1''/var/lib/postgresql/data' के रूप में आरोहित किया गया है (साथ ही '/ data' )। लेकिन यह बिल्कुल वही खाली स्थान है जैसा '/' है, इसलिए शायद कवर के नीचे एक ही वॉल्यूम है, और जब आप 'df' चलाते हैं तो यह कहीं भी पूर्ण नहीं है। मैं डॉकर देवताओं को रोकता हूं। 'डॉकर इंस्पेक्ट' शायद अधिक प्रकट होगा। – slim

+0

डिफ़ॉल्ट रूप से, कंटेनर को 10 जीबी स्पेस मिलता है, शायद वह दीवार है जिसमें आप चल रहे हैं। मेरे पास इस समय बहुत समय देखने के लिए समय नहीं है, लेकिन मेरा मानना ​​है कि आप इसे बढ़ा सकते हैं, और https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/ –

उत्तर

1

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

डॉकर छवियां फाइल सिस्टम स्नैपशॉट की केवल-पढ़ने वाली परतों से बने हैं, प्रत्येक Dockerfile में कमांड द्वारा बनाई गई प्रत्येक परत, जो कि सामान्य बेस स्टोरेज स्नैपशॉट के शीर्ष पर बनाई गई है। बेस स्नैपशॉट आपकी सभी छवियों द्वारा साझा किया जाता है और इसमें 10GB के डिफ़ॉल्ट आकार वाले फ़ाइल सिस्टम होते हैं। जब आप अपनी छवि चलाते हैं तो आपको छवि में सभी परतों के शीर्ष पर एक नई लिखने योग्य परत मिलती है, ताकि आप अपने चल रहे कंटेनर में नई फाइलें जोड़ सकें लेकिन यह अंततः 10 जीबी फाइल सिस्टम के साथ उसी बेस स्नैपशॉट पर आधारित है। यह devicemapper के लिए कम से कम सत्य है, अन्य ड्राइवरों के बारे में सुनिश्चित नहीं है। Here डॉकर से प्रासंगिक दस्तावेज है।

इस डिफ़ॉल्ट मान को किसी और चीज़ में बदलने के लिए, एक डिमन पैरामीटर सेट कर सकते हैं, उदाहरण के लिए docker daemon --storage-opt dm.basesize=100G। चूंकि आप शायद डॉकर डिमन को चलाने के तरीके के आधार पर कुछ फ़ाइल में डॉकर डिमन विकल्पों को संपादित करने के लिए मैन्युअल रूप से डेमॉन नहीं चलाते हैं। मैक के लिए डॉकर के साथ आप Daemon->Advanced के तहत प्राथमिकताओं में JSON के रूप में डिमन पैरामीटर संपादित कर सकते हैं। आप शायद कुछ इस तरह जोड़ने की जरूरत:

{ 
    "storage-opts": ["dm.basesize=100G"] 
} 

(लेकिन जैसे मैंने कहा, मैं लिनक्स पर इस समस्या थी, इसलिए ऊपर की कोशिश नहीं की)।

वैसे भी इसे प्रभावी होने के लिए, आपको अपनी सभी मौजूदा छवियों को हटाने की आवश्यकता होगी (ताकि वे नए आकार के साथ नए बेस स्नैपशॉट के शीर्ष पर फिर से बनाए गए हों)। storage driver options देखें।

+0

पर एक नज़र डालें ध्यान दें कि यह केवल devicemapper के लिए है और ओएसएक्स इसका उपयोग नहीं करता है: https://github.com/docker/for-mac/issues/2134 – pcambra

0

मैं इस के लिए कई विकल्प नहीं मिला है, GitHub में मुख्य मुद्दा https://github.com/docker/for-mac/issues/371

विकल्पों में से कुछ लोगों ने सुझाव है देखते हैं:

  • आप सभी छवियों/कंटेनरों को दूर कर सकते हैं, आप कर सकते हैं इन निर्देशों का पालन:

docker rm $(docker ps -a -q) docker rmi $(docker images -q) docker volume rm $(docker volume ls |awk '{print $2}') rm -rf ~/Library/Containers/com.docker.docker/Data/*

  • आप सभी अप्रयुक्त छवियों/कंटेनर छँटाई करने के लिए कोशिश कर सकते हैं, लेकिन यह बहुत प्रभावी नहीं साबित हो गया है:

docker system prune

  • टेम्प्लेट छवि बड़ा है कि प्रयोग करें, homebrew का उपयोग कर qemu स्थापित करने और चारों ओर चित्र को स्थानांतरित यह विशिष्ट टिप्पणी देखें: https://github.com/docker/for-mac/issues/371#issuecomment-242047368 लेकिन कंटेनरों/छवियों को खोए बिना आपको कम से कम 2x स्पेस शेष करने की आवश्यकता है।

यह भी देखें: How do you get around the size limitation of Docker.qcow2 in the Docker for Mac? और https://forums.docker.com/t/no-space-left-on-device-error/10894/26

संबंधित मुद्दे

 संबंधित मुद्दे