DEV Community

Cover image for খেলার মাঠ থেকে ডকার: ভার্চুয়াল মেশিন এবং কন্টেইনার
Shuvro_baset
Shuvro_baset

Posted on

খেলার মাঠ থেকে ডকার: ভার্চুয়াল মেশিন এবং কন্টেইনার

সফটওয়্যার ইঞ্জিনিয়ারিংয়ের দুনিয়ায় পা রাখলে দুটি শব্দ বারবার কানে আসে— Virtual Machine (VM) এবং Container। এই দুটির পার্থক্য বুঝতে গিয়ে অনেকে খেই হারিয়ে ফেলেন। চলুন, আমাদের এলাকার খেলার মাঠের একটি কাল্পনিক গল্প দিয়ে বিষয়টি পরিষ্কার করা যাক।

১. ভার্চুয়াল মেশিন (VM) যখন মাঠ ভাগ হয়ে যায়:

আমাদের এলাকায় একটি বিশাল খেলার মাঠ আছে। এলাকার একদল মানুষ ক্রিকেট পাগল, আর অন্যদল ফুটবল ভক্ত। সবাই একসাথে মাঠে খেলতে চায় । মুরুব্বিরা (যাদের আমরা টেকনিক্যালি বলব Hypervisor) একটি সিদ্ধান্ত নিলেন। তারা মাঠের মাঝখানে দেয়াল তুলে মাঠটিকে দুই ভাগ করে দিলেন।

  • পুরো মাঠ: আমাদের মূল কম্পিউটার বা হার্ডওয়্যার।
  • জমি: স্টোরেজ বা HDD
  • ম্যানেজমেন্ট রুম: CPU
  • ড্রেসিং রুম: মেমোরি বা RAM

মাঠ ভাগ করার সাথে সাথেই প্রতিটি ভাগের জন্য আলাদা ম্যানেজমেন্ট রুম, আলাদা ড্রেসিং রুম এবং আলাদা এন্ট্রি গেট তৈরি করতে হলো। অর্থাৎ, প্রতিটি ভার্চুয়াল মেশিন তার নিজের জন্য আলাদা অপারেটিং সিস্টেম (Guest OS) এবং রিসোর্স দখল করে নিলো। এখানে একটির প্লেয়ার অন্যটির রুমে ঢুকতে পারে না। এটি নিরাপদ, কিন্তু অনেক জায়গা এবং সম্পদ অপচয় করে ।

সহজ ভাষায় Virtual Machine মানে- একটা কম্পিউটারের ভেতরে আরেকটা পুরো কম্পিউটার।

ভিতরে কী থাকে?

একটা VM এর ভেতরে থাকে:

  • নিজস্ব Operating System (Linux/Windows)
  • নিজস্ব Kernel
  • CPU, RAM, Disk (share করা, কিন্তু আলাদা করে দেয়া)
  • Application

Hypervisor কী?

Hypervisor হলো manager

  • কে কত RAM পাবে
  • কে কত CPU পাবে
  • কে কখন চলবে

VM কেন Heavy?

  • প্রতিটা VM এ পুরো OS
  • প্রতিটা OS আলাদা Kernel চালায়

👉 তাই VM:

  • Slow start
  • বেশি RAM/Disk লাগে

VM কখন ব্যবহার করা ভালো?

  • Different OS দরকার (Windows + Linux)
  • Strong security isolation দরকার
  • Legacy system

২. ডকার কন্টেইনার (Docker): যখন মাঠ শেয়ার করা হয়

এবার একটু ভিন্নভাবে চিন্তা করি। মাঠ একটাই, কোনো দেয়াল নেই। কিন্তু মাঠের এক কোণে ৪-৫টি পিচে ক্রিকেট খেলা চলছে, অন্যপাশে ব্যাডমিন্টন আর এক পাশে ফুটবল। সবাই একই মাঠ, একই ড্রেসিং রুম আর একই গেট ব্যবহার করছে।

কিন্তু মজার ব্যাপার হলো, ক্রিকেটের প্লেয়াররা এমনভাবে খেলছে যেন তাদের কাছে ওই পিচটুকুই তাদের জগত। তারা অন্য খেলায় বাধা দিচ্ছে না। এই যে একই মাঠ (Host OS) ব্যবহার করে ছোট ছোট সীমানায় (Isolated environment) নিজেদের খেলা চালানো—এটিই হলো Container।

কন্টেইনার প্রযুক্তিতে ডকার মূলত Namespace এবং Cgroups ব্যবহার করে এই অদৃশ্য সীমানা তৈরি করে।

Namespace:

  • এটি প্রতিটি খেলার জন্য একটি আলাদা "ভিউ" তৈরি করে, যাতে একজন অন্যজনের প্রসেস দেখতে না পায়।
  • Namespace Container কে বোঝায় তুমি একা
  • বাস্তবে সব Host OS এর ভেতরে।
  • PID (process)
  • NET (network)
  • MNT (filesystem)

Cgroups — resource control

  • Cgroups: এটি নিশ্চিত করে যে ফুটবল প্লেয়াররা যেন পুরো মাঠ দখল না করে ফেলে, ক্রিকেটের জন্য যেন নির্দিষ্ট জায়গা থাকে।
  • এই Container max কত CPU
  • max কত RAM

👉 এক Container অন্যটার resource খেতে পারবে না।

সহজ ভাষায় Container হলো OS-এর ভেতরে আলাদা আলাদা lightweight environment

এগুলো নিজেদের OS চালায় না, Host OS এর Kernel ব্যবহার করে।

কীভাবে কাজ করে?

  • Host OS (Linux)
  • Docker / Container Runtime
  • একাধিক Container

👉 প্রতিটা Container এর আছে:

  • App
  • App dependencies
  • নিজস্ব OS নেই
  • Host Kernel শেয়ার করে

ভার্চুয়াল মেশিন হলো আলাদা আলাদা বাড়ি তৈরির মতো নিরাপদ কিন্তু ব্যয়বহুল। আর ডকার কন্টেইনার হলো একই মাঠের ভেতর সুশৃঙ্খলভাবে আলাদা আলাদা খেলা চালানোর মতো দক্ষ এবং সাশ্রয়ী।

Top comments (0)