क्या मुझे अतिरिक्त, गैर-चलने वाले, डॉकटर कंटेनरों के बारे में चिंतित होना चाहिए?


142

प्रत्येक docker runआदेश, या RUNडॉकफाइल के अंदर प्रत्येक कमांड, एक कंटेनर बनाता है। यदि कंटेनर अब नहीं चल रहा है, तब भी इसे देखा जा सकता है docker ps -a

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

मैं इन गैर-चल रहे कंटेनरों को किस प्रदर्शन या मेमोरी / स्टोरेज पेनल्टी के बारे में अनिश्चित हूं।


1
docker execथोड़ी देर पहले एक कमांड जोड़ा गया है, देखें docs.docker.com/reference/commandline/cli/#exec - यह एक चालू कंटेनर को कमांड निष्पादित करेगा।
schmunk

FYI करें, यदि आप यह देखना चाहते हैं कि पुराने कंटेनरों को कैसे हटाया जाए, तो यह प्रश्न देखें: stackoverflow.com/questions/17236796/…
रायन

1
@schmunk लिंक स्थानांतरित हो गया है। docs.docker.com/engine/reference/commandline/exec
akauppi

जवाबों:


72

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

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

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


1
RUNकमांड के लिए डॉक्स अब चले गए हैं: docs.docker.io/en/latest/reference/builder/#run
aculich

63

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

  --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

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

3
-rmनिकाला जाता है और कुछ समय में हटा दिया जाएगा, --rmइसके बजाय उपयोग करें ।
bain

5

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


2

मैं इन गैर-चल रहे कंटेनरों को किस प्रदर्शन या मेमोरी / स्टोरेज पेनल्टी के बारे में अनिश्चित हूं।

यह आकलन करने के लिए कि डॉकिंग कंटेनर कितने गैर-चल रहे हैं, आप उपयोग कर सकते हैं:

docker ps --size --filter "status=exited"

समान रूप से , आप चला सकते हैं:docker container ls --filter "status=exited"

आप कमांड का उपयोग भी कर सकते हैं docker system df(डॉकर 1.13.0, जनवरी 2017 में) डॉक डिस्क का उपयोग देखने के लिए, उदाहरण के लिए:

username@server:~$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              44                  28                  114.7GB             84.84GB (73%)
Containers          86                  7                   62.43GB             41.67GB (66%)
Local Volumes       2                   1                   0B                  0B
Build Cache                                                 0B                  0B
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.