ویرگول
ورودثبت نام
Amir Fatemi
Amir FatemiDevOps Engineer
Amir Fatemi
Amir Fatemi
خواندن ۴ دقیقه·۷ سال پیش

بازی با داکر قسمت اول How to analyze disk usage of a Docker container

در این آموزش قراره بررسی کنیم که یک داکر کانتینر چقدر دیسک استفاده میکند ؟


در حل این سوال ما ابزار مانیتور کردن کانتینر نداریم و با استفاده از خود کامند های متداول داکر برای پاسخ به این موضوع استفاده میکنیم .

با استفاده از کامند زیر می توانید اندازه استفاده شده توسط هر کانتینر را مشاهده کنید :

docker ps -s (--size , -sDisplay total file sizes)

خروجی دستور بالا به شکل زیر میباشد :

مثال شماره ۱
مثال شماره ۱

در بخش سايز ما دو عدد 2B و virtual 183MB مشاهده می کنیم .

  • قسمت 2B لایه قابل نوشتن در هر کانتینر را نمایش میدهد (used for the writable layer of each container)
  • قمست virtual مجموع لایه قابل نوشتن و لایه غیرقابل نوشتن را نمایش میدهد. (total amount of disk-space used for the read-only image data used by the container and the writable layer)

لایه غیر قابل تغییر چیه؟
این لایه را داکر امیج پایه این کانتینر تشکیل میده که قابل تغیر نیست . مثلا اگر داکر ایمیج شما 183MB باشد یک بار این فضا در زمان اجرای اولین کانتینر استفاده میشود و این به این معناست که اگر با ده تا کانتینر nginx داشته باشیم که از یک داکر ایمیج مشابه استفاده میکند تنها یک بار 183MB استفاده میشود و برای همه کانتینر ها استفاده میشود .

مثال شماره ۱ : در عکس بالا مشاهده می کنید که ما دوتا کانتینر nginx داریم بنابرین حجم استفاده شده این دو کانتینر برابر است با 183MB + 5B + 2B

فضاهای مورد استفاده کانتینر که در این کامند شامل نمی شود:

  • volumes
  • swapping
  • checkpoints
  • disk space used for log-files generated by container




اگر اطلاعات کامل تری نسبت به کامند قبل نیاز دارید از کامند زیر استفاده کنید

docker system df --verbose


اطلاعاتی که این دستور به شما می دهد :

  • Images space usage
  • Containers space usage
  • Local Volumes space usage
  • Build cache usage

یک bash script کوچک هم براتون قرار دادم که کارتون رو ساده میکنه و میاد هر کانتینر رو مجزا بررسی می کنه و حجم کانتینر رو حجم volumes استفاده شده و ادرس اون رو هم بهتون میده که امیدوارم بدرتون بخوره

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

خروجی دستور زیر اینگونه است :

/safa_php (9c234f4aabaa) container size:113M /safa_php (9c234f4aabaa) volumes: 112M /home/safa/demo/code mounted on /var/www/html
آموزش داکر
۶
۰
Amir Fatemi
Amir Fatemi
DevOps Engineer
وب هاو
وب هاو
جایی برای یاد گرفتن برنامه نویسی و انتشار مقالات و نوشته های خود به صورت رایگان . برای نویسندگی در وب هاو به واتساپ 09371770774 پیام بدید.
شاید از این پست‌ها خوشتان بیاید