DevOps Engineer
بازی با داکر قسمت اول 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
مطلبی دیگر از این انتشارات
راهنمای عملی توسعه مبتنی بر آزمون(TDD) در تولید نرمافزار
مطلبی دیگر از این انتشارات
اصول SOLID
مطلبی دیگر از این انتشارات
آپدیت نشدن SDK از طریق اندروید استودیو