linux डॉकर-एक कंटेनर डिस्क उपयोग का विश्लेषण कैसे करें?




docker lxc (7)

मैं थोड़ी देर के लिए खोज कर रहा हूं, लेकिन डॉकर कंटेनर / वॉल्यूम के डिस्क उपयोग का विश्लेषण करने का कोई तरीका नहीं मिला।

मैं देख सकता हूं कि डॉकर 12 जीबी फाइल सिस्टम लेता है:

2.7G    /var/lib/docker/vfs/dir
2.7G    /var/lib/docker/vfs
2.8G    /var/lib/docker/devicemapper/mnt
6.3G    /var/lib/docker/devicemapper/devicemapper
9.1G    /var/lib/docker/devicemapper
12G     /var/lib/docker

लेकिन, मुझे कैसे पता चलेगा कि यह कंटेनरों पर कैसे वितरित किया जाता है?

मैंने कंटेनरों को चलकर संलग्न करने की कोशिश की (नया v1.3 कमांड)

docker exec -it <container_name> bash

और उसके बाद डिस्क उपयोग का विश्लेषण करने के लिए 'df -h' चला रहा है। ऐसा लगता है कि काम कर रहा है, लेकिन कंटेनरों के साथ नहीं जो 'वॉल्यूम-से' का उपयोग करते हैं।

उदाहरण के लिए, मैं मोंगो डीबी के लिए डेटा-केवल कंटेनर का उपयोग करता हूं, जिसे 'मोंगो-डेटा' कहा जाता है।

जब मैं कंटेनर के अंदर 'डॉकर रन-एट-वोल्म्स-मॉलो-डेटा व्यस्त बॉक्स' चलाता हूं, और फिर कंटेनर के अंदर 'डीएफ-एच' चलाता है, तो यह कहता है कि फाइल सिस्टम '/ डेटा / डीबी' (मेरा 'मोंगो-डेटा' डेटा-केवल कंटेनर) 11.3 जी का उपयोग करता है, लेकिन जब मैं 'du -h / data / db' करता हूं, तो यह कहता है कि यह केवल 2.1 जी का उपयोग करता है।

तो, मैं कंटेनर / वॉल्यूम डिस्क उपयोग का विश्लेषण कैसे करूं? या, मेरे मामले में, मैं 'मोंगो-डेटा' कंटेनर आकार कैसे प्राप्त करूं?

बहुत धन्यवाद,


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

docker history IMAGE_ID

यह देखने के लिए कि छवि के आकार को इसके विभिन्न उप-घटकों के बीच कैसे वितरित किया जाता है।


यदि आप कई स्तरित छवियों के आकार को कम करना चाहते हैं, तो मैं जेसन वाइल्डर की docker-squash उपयोगिता की सिफारिश कर सकता हूं। इसे गिटहब से यहां प्राप्त करें: https://github.com/jwilder/docker-squash


वॉल्यूम भाग अब और काम नहीं करता है, इसलिए यदि कोई भी insterested है तो मैं बस उपरोक्त स्क्रिप्ट को थोड़ा सा बदलता हूं:

for d in `docker ps | awk '{print $1}' | tail -n +2`; do
    d_name=`docker inspect -f {{.Name}} $d`
    echo "========================================================="
    echo "$d_name ($d) container size:"
    sudo du -d 2 -h /var/lib/docker/aufs | grep `docker inspect -f "{{.Id}}" $d`
    echo "$d_name ($d) volumes:"
    for mount in `docker inspect -f "{{range .Mounts}} {{.Source}}:{{.Destination}}                                                                                                                                                      
    {{end}}" $d`; do
        size=`echo $mount | cut -d':' -f1 | sudo xargs du -d 0 -h`
        mnt=`echo $mount | cut -d':' -f2`
        echo "$size mounted on $mnt"
    done
done

अपने कंटेनर के फ़ाइल आकार को देखने के लिए, आप docker ps तर्क का उपयोग कर सकते हैं:

docker ps -s

इसे उत्तर के रूप में पोस्ट करना क्योंकि ऊपर दी गई मेरी टिप्पणियां छिपी हुई हैं:

एक कंटेनर के आकार की सूची:

du -d 2 -h /var/lib/docker/devicemapper | grep `docker inspect -f "{{.Id}}" <container_name>`

कंटेनर के वॉल्यूम्स के आकारों की सूची बनाएं:

docker inspect -f "{{.Volumes}}" <container_name> | sed 's/map\[//' | sed 's/]//' | tr ' ' '\n' | sed 's/.*://' | xargs sudo du -d 1 -h

संपादित करें: सभी चल रहे कंटेनरों के आकार और वॉल्यूम सूचीबद्ध करें:

for d in `docker ps -q`; do
    d_name=`docker inspect -f {{.Name}} $d`
    echo "========================================================="
    echo "$d_name ($d) container size:"
    sudo du -d 2 -h /var/lib/docker/devicemapper | grep `docker inspect -f "{{.Id}}" $d`
    echo "$d_name ($d) volumes:"
    docker inspect -f "{{.Volumes}}" $d | sed 's/map\[//' | sed 's/]//' | tr ' ' '\n' | sed 's/.*://' | xargs sudo du -d 1 -h
done

नोट: अपने डॉकर फाइल सिस्टम के अनुसार 'devicemapper' बदलें (उदाहरण के लिए 'aufs')


1.13.0 के बाद , डॉकर में डॉकर डिस्क उपयोग दिखाने के लिए एक नया कमांड docker system df है।

$ docker system df
TYPE            TOTAL        ACTIVE     SIZE        RECLAIMABLE
Images          5            1          2.777 GB    2.647 GB (95%)
Containers      1            1          0 B         0B
Local Volumes   4            1          3.207 GB    2.261 (70%)

अंतरिक्ष उपयोग पर अधिक विस्तृत जानकारी दिखाने के लिए

$ docker system df -v

(यह उत्तर उपयोगी नहीं है, लेकिन यहां कुछ टिप्पणियां हो सकती हैं क्योंकि कुछ टिप्पणियां हो सकती हैं)

docker images 'आभासी आकार' दिखाती हैं, यानि कुल निचले परतों सहित कुल में कितना। तो कुछ डबल-गिनती अगर आपके पास कंटेनर हैं जो समान आधार छवि साझा करते हैं।

documentation







device-mapper