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
مطلبی دیگر از این انتشارات
تابع IIF در Sql
مطلبی دیگر از این انتشارات
تفاوت Interface و Abstract Class
مطلبی دیگر از این انتشارات
آپدیت نشدن SDK از طریق اندروید استودیو