কীভাবে ডকার পাত্রে ডিস্ক ব্যবহার বিশ্লেষণ করবেন


258

আমি দেখতে পাচ্ছি যে ডকার আমার 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' চলছে। এটি কাজ করছে বলে মনে হচ্ছে, তবে 'ভলিউম-থেকে' ব্যবহার করা পাত্রে নয়।

উদাহরণস্বরূপ, আমি মঙ্গোডিবি-র জন্য কেবলমাত্র একটি ডেটা-পাত্রে ব্যবহার করি, যার নাম 'মঙ্গো-ডেটা'।

আমি যখন চালনা করি docker run -it --volumes-from mongo-data busyboxএবং তারপরে df -hধারকের ভিতরে থাকি তখন এটি বলছে যে ফাইল সিস্টেমটি মাউন্ট করা হয়েছে /data/db(আমার 'মঙ্গো-ডেটা' কেবলমাত্র ডেটা-পাত্রে) 11.3G ব্যবহার করে, তবে যখন আমি du -h /data/dbএটি করি তখন এটি বলে যে এটি কেবল 2.1G ব্যবহার করে।

সুতরাং, আমি কীভাবে কোনও ধারক / ভলিউম ডিস্ক ব্যবহার বিশ্লেষণ করব? বা, আমার ক্ষেত্রে, আমি কীভাবে 'মঙ্গো-ডেটা' ধারক আকারটি সন্ধান করব?


আপনি যদি অনেক স্তরযুক্ত চিত্রগুলির আকার হ্রাস করতে চান তবে আমি জেসন ওয়াইল্ডারের docker-squashইউটিলিটিটি সুপারিশ করতে পারি । এটি এখানে গিটহাব থেকে পান: github.com/jwilder/docker-squash
mhvelplund

ম্যাক ওএস এক্স-তে একটি উন্মুক্ত সমস্যা রয়েছে "ডকার ডিস্কের জায়গা ছেড়ে দেয় না ...": github.com/docker/for-mac/issues/371
asmaier

উত্তর:


459

আপনার ধারকগুলির ফাইলের আকারটি দেখতে, আপনি এর --sizeযুক্তিটি ব্যবহার করতে পারেন docker ps:

docker ps --size

25
নোট করুন যে ডকার পিএস
সের্গেই

5
আমি আরও লক্ষ্য করেছি যে docker ps -sদৌড়াদৌড়ি / var / lib / ডকার / অ্যাকাউন্টে রাখা লগগুলি গ্রহণ করে না।
demee

17
এটি দুটি মান আউটপুট করে, এর 27.2MB (virtual 173MB)মধ্যে তাদের মধ্যে পার্থক্য কী?
মোহাম্মদ নুরাল্ডিন


4
নোট করুন এটি উইন্ডোজের জন্য ডকারে কাজ করে না - এটি সমস্ত কিছুর জন্য 0 প্রতিবেদন করে।
মাইক ক্রিস্টেনসেন

302

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

আপনার কাছে প্রচুর উপাদান থাকলে একটি দরকারী কমান্ড:docker system df --verbose > docker.stats-2019-07-18.log
জোসেলুয়াস্ক

ধারকটির SIZ কলামটির অর্থ কী? আমার কিছু ধারক বন্ধ রয়েছে এবং উদাহরণস্বরূপ এই কমান্ডটি SIZE = 100MB দেখায়।
ডানিলো

SIZE = 100MB কনটেইনারটি বন্ধের জন্য
ডানিলো

31

এটিকে উত্তর হিসাবে পোস্ট করা কারণ আমার উপরের মন্তব্যগুলি গোপন হয়ে গেছে:

একটি ধারক আকারের তালিকা:

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

দ্রষ্টব্য: আপনার ডকার ফাইলসিস্টেম অনুসারে 'ডিভাইসমেপার' পরিবর্তন করুন (যেমন 'অউফস')


8
"du -d 2" আমার সেন্টোস সিস্টেমে কাজ করে না, তার পরিবর্তে আমাকে "du --max-গভীরতা 2" ব্যবহার করতে হয়েছিল।
ডাঃ-জান

2
ম্যাক এটি দেখায় /var/lib/docker/devicemapper: No such file or directory। কোনও ধারণা যেখানে ডিভাইসমেপার ম্যাকে সঞ্চিত আছে?
মার্কাস

মার্কাস: আপনি যদি বুট 2 ডকার ব্যবহার করছেন তবে আপনাকে duআপনার বুট 2 ডকার হোস্ট ভিএম-এর ভিতরে কমান্ডটি চালাতে হবে । আপনি যদি aufsডিভাইস ম্যাপারের পরিবর্তে ব্যবহার করে থাকেন তবে কমান্ডটিও ব্যর্থ হতে পারে ।
জেমস

'ডকার পিএস-কিউ' সম্পর্কে কীভাবে ডাব্লু / লেজের পরিবর্তে পাত্রে হ্যাশগুলি তালিকাভুক্ত করা যায়?
অ্যান্ড্রু ওল্ফ

আমার উবুন্টু 14.04 / ডকার 1.10.2 ইনস্টলেশনটিতে কনটেইনার আকার সর্বদা ফাঁকা থাকে।
mhvelplund

22

ভলিউম অংশটি আর কাজ করে না তাই যদি কেউ আগ্রহী হয় তবে আমি কেবল উপরের স্ক্রিপ্টটি কিছুটা পরিবর্তন করব:

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

মাউন্ট পয়েন্টস! =
খণ্ড

ম্যাক ডকার ১.১২.১ ইমেজ ফাইলগুলিকে Library / লাইব্রেরি / কনটেইনার / কম.ডোকার.ডোকার / না / ভেরি / লিবিব / ডকার / আউফগুলিতে রাখে। ফাইলের নামগুলির জন্য .আইড বা। ধারণ করে না (নাম :-(
পাওল_

10

(এই উত্তরটি কার্যকর নয়, তবে কিছু মন্তব্য হতে পারে বলে এটি এখানে রেখে দেওয়া)

docker images'ভার্চুয়াল আকার' প্রদর্শন করবে, অর্থাত্ সমস্ত নিম্ন স্তর সহ মোট কত। সুতরাং কিছু ডাবল কাউন্টিং যদি আপনার ধারকগুলি একই বেস ইমেজ ভাগ করে থাকে।

ডকুমেন্টেশন


3
আমি চিত্রগুলি সম্পর্কে বলছি না, তবে পাত্রে সম্পর্কে (তালিকাটি 'ডকার পিএস' চালিয়ে দেখানো হয়েছে)।
অ্যালোনল

1
ধারকগুলি প্রক্রিয়াগুলির মতো; তাদের ডিস্কের জায়গা নেই।
ব্রায়ান

2
"ডকার রান কমান্ডটি প্রথমে নির্দিষ্ট চিত্রের উপরে একটি লিখনযোগ্য ধারক স্তর তৈরি করে ..." ( ডকস.ডকার ডটকম / ভি ১.১ / রেফারেন্স / কম্যান্ডলাইন / স্লি ) এই স্তরটি আমার অর্থ, বা অন্য কোনও খণ্ড যা মাউন্ট করা হয়েছে 'ভলিউম-থেকে' ইত্যাদি ইত্যাদির মাধ্যমে পাত্রে যান
AlonL

1
সম্ভবত এই সরঞ্জাম সাহায্য করবে? github.com/cpuguy83/docker-volumes থেকে উল্লেখিত container42.com/2014/11/03/docker-indepth-volumes
ব্রায়ান

1
ধন্যবাদ, এটি আমার চাহিদা পূরণ করে না তবে এটি একটি দুর্দান্ত সরঞ্জাম।
অ্যালোনল

10

আমি docker stats $(docker ps --format={{.Names}}) --no-streamপেতে ব্যবহার :

  1. CPU 'র ব্যবহার,
  2. মেমের ব্যবহার / ধারককে বরাদ্দ করা মোট মেম (ডকার রান কমান্ডের সাথে বরাদ্দ করা যেতে পারে)
  3. মেমো%
  4. ব্লক আই / ও
  5. নেট I / O

8

তুমি ব্যবহার করতে পার

docker history IMAGE_ID

চিত্রটির আকারটি বিভিন্ন উপ-উপাদানগুলির মধ্যে কীভাবে বিভক্ত হয় তা দেখতে।


4

মনে রাখবেন যে docker ps --sizeএকটি ব্যয়বহুল আদেশ হতে পারে, সম্পূর্ণ হতে কয়েক মিনিটের বেশি সময় নেয়। একই ধারকগুলির সাথে কন্টেইনার তালিকার এপিআই অনুরোধগুলি প্রযোজ্য size=1। এটি প্রায়শই চালানো ভাল না।

ডকারের ধ্রুবক ভলিউম ডিরেক্টরিটির বিকল্প সহ আমরা সংকলিত বিকল্পগুলি একবার দেখুন du -hs


আমার সার্ভারে কেস নেই - মিলিসেকেন্ডে চলে। উপরের দিকে ওয়াইএমএমভি সতর্কতা (পরীক্ষা, যেমন সের্গেই বলেছে "... হতে পারে ...")
টড কারি

আমিও পরীক্ষা করছি, এটি ডকার পিএস
সাইজ

3

ম্যাক্সিমের অ্যাঞ্জার উন্নত করা:

docker ps --size

আপনি এরকম কিছু দেখতে পাবেন:

+---------------+---------------+--------------------+
| CONTAINER ID  | IMAGE         | SIZE               |
+===============+===============+====================+
| 6ca0cef8db8d  | nginx         | 2B (virtual 183MB) |
| 3ab1a4d8dc5a  | nginx         | 5B (virtual 183MB) |
+---------------+---------------+--------------------+

কোনও ধারক শুরু করার সময়, ধারকটি যে চিত্রটি শুরু হয়েছিল তা কেবল পঠনযোগ্য হিসাবে মাউন্ট করা হয় (ভার্চুয়াল)
তার উপরে, একটি লিখনযোগ্য স্তর মাউন্ট করা হয়, এতে ধারকটিতে যে কোনও পরিবর্তন লেখা থাকে।

সুতরাং ভার্চুয়াল আকার (উদাহরণে 183MB) কেবল একবার ব্যবহার করা হয়, একই চিত্র থেকে যতগুলি পাত্রে শুরু হয়েছিল তা নির্বিশেষে - আমি 1 টি ধারক বা এক হাজার শুরু করতে পারি;কোনও অতিরিক্ত ডিস্ক স্পেস ব্যবহার করা হয় না
"আকার" (উদাহরণে 2 বি) যদিও ধারক প্রতি অনন্য, তাই ডিস্কে ব্যবহৃত মোট স্থানটি হ'ল:

183 এমবি + 5 বি + 2 বি

সচেতন থাকুন যে প্রদর্শিত আকারটি কোনও ধারকটির জন্য ব্যবহৃত সমস্ত ডিস্কের স্থান অন্তর্ভুক্ত করে না।
যে বিষয়গুলি বর্তমানে অন্তর্ভুক্ত নেই সেগুলি হ'ল;
- ভলিউম
- অদলবদল
- চেকপয়েন্টগুলি
- কনটেইনার দ্বারা উত্পাদিত লগ-ফাইলগুলির জন্য ডিস্ক স্পেস ব্যবহৃত হয়

https://github.com/docker/docker.github.io/issues/1520#issuecomment-305179362

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.