2013-06-09 12 views
115

प्रत्येक docker run कमांड, या प्रत्येक RUN कमांड डॉकरफ़ाइल के अंदर कमांड, एक कंटेनर बनाता है। यदि कंटेनर अब नहीं चल रहा है तो इसे अभी भी docker ps -a के साथ देखा जा सकता है।क्या मुझे अतिरिक्त, गैर-चलने वाले, डॉकर कंटेनर के बारे में चिंतित होना चाहिए?

क्या मुझे गैर-चलने वाले कंटेनरों की एक विशाल सूची होने का चिंतित होना चाहिए? क्या मुझे गैर-चलने वाले कंटेनर पर docker rm जारी करना चाहिए?

मुझे यकीन है कि इन गैर-चलने वाले कंटेनर के प्रदर्शन या स्मृति/संग्रहण दंड का क्या असर होता है।

+1

कुछ समय पहले एक 'डॉकर exec' कमांड जोड़ा गया है, https://docs.docker.com/reference/commandline/cli/#exec देखें - यह एक चल रहे कंटेनर से कमांड निष्पादित करेगा। – schmunk

+0

एफवाईआई, यदि आप पुराने कंटेनर को कैसे निकालना चाहते हैं, तो यह प्रश्न देखें: http://stackoverflow.com/questions/17236796/how-to-remove-old-docker-containers/29474367 –

+1

@schmunk लिंक ले जाया गया है । https://docs.docker.com/engine/reference/commandline/exec/ – akauppi

उत्तर

56

कंटेनर जो चल रहे नहीं हैं डिस्क स्थान के अलावा कोई सिस्टम संसाधन नहीं ले रहे हैं।

आमतौर पर अपने आप को साफ करना अच्छा होता है, लेकिन यदि आपके पास बहुत से लोग बैठे हैं तो प्रदर्शन को धीमा नहीं करना चाहिए।

यदि आप बहुत सारे बंद कंटेनर के साथ डॉकर कमांड चलाते समय धीमे हो जाते हैं, तो यह डॉकर में एक बग हो सकता है, और आपको एक बग सबमिट करना चाहिए।

+1

'RUN' कमांड के लिए दस्तावेज़ अब स्थानांतरित हो गए हैं: http://docs.docker.io/en/latest/reference/builder/ #run – aculich

59

docker run documentation वर्णन करता है कि स्वचालित रूप से कंटेनर को साफ करने और फाइल सिस्टम को दूर जब कंटेनर बाहर निकलता है:

--rm=false: Automatically remove the container when it exits (incompatible with -d) 

ऊपर से पता चलता है कि डिफ़ॉल्ट रूप से कंटेनर नहीं हटाया जाता है, लेकिन --rm=true या सिर्फ छोटी जोड़ने हाथ --rm इसलिए की तरह काम करेगा:

sudo docker run -i -t --rm ubuntu /bin/bash 

जब आप कंटेनर से बाहर निकलने यह स्वचालित रूप से हटा दिया जाएगा।

आप एक टर्मिनल विंडो में अपने डोकर कंटेनर लिस्टिंग करके इसकी जांच कर सकते हैं:

watch -n1 'sudo ls -c /var/lib/docker/containers' 

और फिर एक और विंडो में एकाधिक डोकर कंटेनर चलाने के लिए इस आदेश चला कि होगा सब स्वचालित रूप से बाहर निकलने के लिए 10 सेकंड के लिए सो के बाद ।

for i in {1..10}; do sudo docker run --rm ubuntu /bin/sleep $i & done 
+3

* प्रश्न * का सीधा जवाब नहीं है, लेकिन एक दिलचस्प जवाब है जो उपयोगकर्ताओं को डॉकर के पीछे तंत्र में कुछ अंतर्दृष्टि प्रदान करेगा। धन्यवाद! – thaJeztah

+3

'-rm' बहिष्कृत है और कुछ समय में हटा दिया जाएगा, इसके बजाय' --rm' का उपयोग करें। – bain

+1

"' -rm' "पहले ही हटा दिया गया है – Vanuan

5

आप एक मात्रा के साथ एक कंटेनर चलाने के लिए और डोकर rm -v का उपयोग नहीं करते तो इसे हटाने के लिए मात्रा नहीं हटाया जा रहा है आप एक कंटेनर को हटाने के बाद है। एक वीएफएस स्टोरेज ड्राइवर के साथ issue भी है। यदि आप साफ करना भूल जाते हैं, तो वॉल्यूम आपकी डिस्क स्पेस खाएगा।

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

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