সরাসরি প্রধান সামগ্রীতে চলে যান

docker - Namespaces & cgroups কী

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)

  1. Linux kernel namespace দিয়ে isolation করে
  2. cgroups দিয়ে resource limit করে
  3. Filesystem copy-on-write (overlayFS) দেয়
  4. একটা container তৈরি হয়

এই চারটা মিলেই "magic" container।


আপনি চাইলে পরের ধাপে আমি দেখাতে পারি:

✅ Terminal দিয়ে Namespace কিভাবে দেখা যায়

✅ cgroup folder structure কী

✅ Docker container inside Linux view diagram

বলুন: "show with commands"

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

Allow CSP in Chrome and Firefox and Call Server API in Spring boot Bangla

ঠিক আছে 🔥। আমি তোমার জন্য একটি সম্পূর্ণ README-style document বানাচ্ছি, যেখানে Chrome এবং Firefox দুটোতেই Spring Boot backend-এর জন্য CSP এবং CORS ঠিকভাবে configure করার process step-by-step আছে। README: CSP & CORS Configuration for Spring Boot (Chrome & Firefox) Overview এই document-এ দেখানো হয়েছে কিভাবে: Spring Boot backend থেকে Content Security Policy (CSP) configure করা যায়। Spring Boot backend থেকে Cross-Origin Resource Sharing (CORS) allow করা যায়। Chrome ও Firefox-এ fetch/API calls চালাতে হয় কীভাবে। ⚠️ Important: নিচের setup mostly development/test environment-এর জন্য। Production environment-এ অবশ্যই CSP & CORS secure করে configure করতে হবে। 1. Spring Boot Backend Configuration 1.1 CSP (Content Security Policy) Spring Boot WebFlux বা Spring MVC application-এ CSP header সেট করতে হবে: a) WebFlux (reactive) import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web....

AWS Lambda কী?

AWS Lambda কী? AWS Lambda হল একটি সার্ভারলেস কম্পিউটিং সার্ভিস, যা AWS ক্লাউডে কোড রান করার জন্য ব্যবহৃত হয়। Lambda ব্যবহারকারীদের কোনো সার্ভার বা ইনফ্রাস্ট্রাকচার ম্যানেজমেন্ট ছাড়াই কোড চালাতে সাহায্য করে। এটি মূলত ইভেন্ট-ড্রিভেন, যেখানে বিভিন্ন AWS সেবা (যেমন S3, DynamoDB, SNS) বা কাস্টম ইভেন্ট দ্বারা Lambda ফাংশন ট্রিগার হতে পারে। Lambda কোড রান করার পর তা একাধিক আউটপুট জেনারেট করতে পারে, অথবা অন্যান্য সিস্টেমে ফলাফল পাঠাতে পারে। Lambda একটি serverless প্ল্যাটফর্ম, যার মানে হল আপনি কোনও সার্ভার বা হোস্টিং ম্যানেজ করবেন না। আপনি শুধুমাত্র আপনার কোড লেখবেন এবং Lambda সার্ভিস তার ইনফ্রাস্ট্রাকচার পরিচালনা করবে। AWS Lambda এর প্রধান সুবিধা: সার্ভার পরিচালনা প্রয়োজন নেই : আপনি কেবল কোড লেখবেন, সার্ভার বা ইনফ্রাস্ট্রাকচার সম্পর্কিত কোনও চিন্তা করার দরকার নেই। স্কেলিং : Lambda স্বয়ংক্রিয়ভাবে ইনফ্রাস্ট্রাকচার স্কেল করতে পারে। আপনার অ্যাপ্লিকেশনের উপর ট্রাফিক বাড়লে Lambda আপনাআপনি সেই অনুযায়ী স্কেল হবে। কোনও ইনিশিয়াল কস্ট নেই : আপনি শুধুমাত্র আপনার কোড রান হওয়া সময়ের জন্য খরচ দেন, স...