Docker মূলত দুইটা Linux core feature এর উপর দাঁড়িয়ে আছে — Namespaces আর cgroups (control groups)। এগুলো দিয়েই Docker container কে isolate আর control করে।
🧩 Namespaces কী? (Isolation)
Namespaces process-গুলোকে আলাদা “virtual view” দেয় যেন তারা মনে করে তারা একাই পুরো সিস্টেম ব্যবহার করছে।
Docker container-এর ভিতরের process মনে করে:
- তার নিজেরই PID 1
- নিজের network
- নিজের filesystem
- নিজের hostname
আসলে সবটাই host এর উপরেই চলছে, কিন্তু namespace আলাদা বলে তারা বুঝতে পারে না।
Docker এ ব্যবহৃত প্রধান namespaces
| Namespace | কাজ | | --- | --- | | PID | আলাদা process tree | | NET | আলাদা network stack (IP, ports, routes) | | MNT | আলাদা filesystem (mount) | | UTS | আলাদা hostname | | IPC | Shared memory আলাদা করে | | USER | আলাদা user mapping |
📌 উদাহরণ:
একই server-এ ১০টা Docker container চললেও প্রত্যেকটার ভিতরে ps aux চালালে শুধু নিজের process-ই দেখা যায় — এটা PID namespace এর কাজ।
⚙️ cgroups কী? (Resource Control)
cgroups (control groups) দিয়ে Linux kernel বলে দেয় কে কত resource ব্যবহার করতে পারবে।
Docker ব্যবহার করে:
- কত CPU ব্যবহার করতে পারবে
- কত memory (RAM) নিতে পারবে
- কত disk I/O
- কত network bandwidth
Example
docker run --memory=512m --cpus=1 nginx
এখানে:
- container শুধু 512MB RAM পাবে
- 1 CPU-এর বেশি ব্যবহার করতে পারবে না
এই limitation enforced করে cgroups।
👀 সহজ ভাষায় পার্থক্য
| বিষয় | Namespaces | cgroups | | --- | --- | --- | | কাজ | আলাদা করে রাখে | কতটুকু পাবে সেটার limit দেয় | | ফোকাস | Isolation | Resource limiting | | উদাহরণ | আলাদা IP | RAM limit 512MB | | Docker কোনটা ব্যবহার করে | ✔ | ✔ |
এক লাইনে:
Namespace = আলাদা করে
cgroups = সীমা বেঁধে দেয়
✅ Docker container কিভাবে কাজ করে (flow)
- Linux kernel namespace দিয়ে isolation করে
- cgroups দিয়ে resource limit করে
- Filesystem copy-on-write (overlayFS) দেয়
- একটা container তৈরি হয়
এই চারটা মিলেই "magic" container।
আপনি চাইলে পরের ধাপে আমি দেখাতে পারি:
✅ Terminal দিয়ে Namespace কিভাবে দেখা যায়
✅ cgroup folder structure কী
✅ Docker container inside Linux view diagram
বলুন: "show with commands"
মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d