Container Resource Management: রিসোর্স নিয়ন্ত্রণ ⚡
ডকার কন্টেইনারগুলো ডিফল্টভাবে হোস্ট মেশিনের সব CPU এবং RAM ব্যবহার করতে পারে। কিন্তু প্রোডাকশন এনভায়রনমেন্টে একটি কন্টেইনার যেন পুরো সিস্টেমের রিসোর্স দখল করে না নেয়, সেজন্য লিমিট সেট করা খুবই জরুরি।
১. মেমোরি কন্ট্রোল (Memory Management)
কন্টেইনারের জন্য র্যাম (RAM) লিমিট করার জন্য নিচের ফ্ল্যাগগুলো ব্যবহার করা হয়:
- RAM Limit (-m): কন্টেইনার কতটুকু মেমোরি ব্যবহার করতে পারবে।bash
docker run -d -m 512m nginx - Swap Limit (--memory-swap): RAM এর সাথে কতটুকু সোয়াপ মেমোরি ব্যবহার করতে পারবে।bash(এখানে কন্টেইনারটি ৫১২ মেগাবাইট র্যাম এবং অতিরিক্ত ৫১২ মেগাবাইট সোয়াপ ব্যবহার করতে পারবে, মোট ১ জিবি।)
docker run -d -m 512m --memory-swap 1g nginx
২. CPU কন্ট্রোল (CPU Management)
কন্টেইনারের প্রোসেসিং পাওয়ার নিয়ন্ত্রণ করার পদ্ধতি:
CPU Limit (--cpus): কন্টেইনার কতটি CPU কোর ব্যবহার করতে পারবে।
bashdocker run -d --cpus 2 nginx(এটি ২ টি কোর ব্যবহার করার পারমিশন দেবে।)
CPU Weight (--cpu-shares): রিসোর্স ক্রাইসিস বা চাপের সময় কোন কন্টেইনার বেশি অগ্রাধিকার পাবে তা ঠিক করে।
bashdocker run -d --cpu-shares 512 nginx(ডিফল্ট ভ্যালু ১০২৪। ৫১২ দিলে এটি অন্য কন্টেইনারের তুলনায় অর্ধেক প্রায়োরিটি পাবে।)
৩. স্ট্যাটাস এবং মনিটরিং (Monitoring)
কোন কন্টেইনার বর্তমানে কতটুকু রিসোর্স ব্যবহার করছে তা লাইভ দেখার জন্য:
docker statsএটি একটি ইন্টারাক্টিভ ড্যাশবোর্ড দেখাবে যেখানে CPU, Memory, এবং Network usage এর লাইভ স্টেটাস দেখা যায়।
৪. রানিং কন্টেইনার আপডেট (Docker Update)
একটি কন্টেইনার চালু থাকা অবস্থায় তার রিসোর্স লিমিট পরিবর্তন করতে হলে:
docker update -m 1g --cpus 1.5 container_idএটি কন্টেইনার রিস্টার্ট না করেই তার লিমিট আপডেট করে দেয়।
৫. রিসোর্স ম্যানেজমেন্ট সামারি
| টাস্ক | কমান্ড / ফ্ল্যাগ |
|---|---|
| মেমোরি লিমিট | -m বা --memory |
| সোয়াপ লিমিট | --memory-swap |
| CPU লিমিট | --cpus |
| প্রায়োরিটি সেট | --cpu-shares |
| সরাসরি আপডেট | docker update |
| লাইভ মনিটরিং | docker stats |
CAUTION
যদি কোনো কন্টেইনার তার লিমিট করা মেমোরির চেয়ে বেশি ব্যবহার করার চেষ্টা করে, তবে ডকার তাকে OOM (Out Of Memory) Kill করে দিতে পারে। তাই সবসময় ইম্পরট্যান্ট কন্টেইনারের জন্য কিছু 'Memory Reservation' রাখা ভালো।