Docker & Podman

စာဖတ်သူတို့ရေ၊ အရင်အပိုင်းမှာ Containers နဲ့ Virtual Machines ကို နှိုင်းယှဉ်ပြီး ပြောပြခဲ့တာ မှတ်မိမယ်ထင်ပါတယ်။ အခု အဲဒီ Containers လောကထဲကို နည်းနည်း ပိုနက်နက်ရှိုင်းရှိုင်း ဝင်ကြည့်ပြီး Docker အကြောင်းနဲ့ တခြား ရွေးချယ်စရာတွေအကြောင်း ဆွေးနွေးကြည့်ရအောင်။ Containerization ဆိုတဲ့ နည်းပညာက ဆော့ဖ်ဝဲလ် တည်ဆောက်ပုံကို တော်လှန်ပြောင်းလဲခဲ့တာမို့ ဒီအကြောင်းကို သိထားတာ အရမ်းတန်ဖိုးရှိပါတယ်။

Containerization မှာ Docker အပြင် ဘာတွေ ရှိလဲ?

Containers ဆိုတဲ့ စကားလုံးကို ကြားလိုက်တာနဲ့ လူအများစုရဲ့ ခေါင်းထဲ အရင်ဆုံး ပေါ်လာတာက Docker ပါပဲ။ ဒါပေမယ့် Docker တစ်ခုတည်းပဲ ရှိတာ မဟုတ်ပါဘူး။ Containerization လောကမှာ တခြား ကစားသမားတွေလည်း ရှိပါတယ်။ ဒါကို ဥပမာနဲ့ နည်းနည်း ခွဲပြီး ကြည့်ရအောင်။

ပထမဆုံးက Podman။ Podman က Docker နဲ့ ဆင်တူတဲ့ Container စီမံခန့်ခွဲတဲ့ ကိရိယာတစ်ခုပါ။ ဒါပေမယ့် သူက Docker နဲ့ မတူတဲ့ အချက်တစ်ခုက သူ့မှာ “daemon” လို့ခေါ်တဲ့ နောက်ကွယ်မှာ အမြဲအလုပ်လုပ်နေတဲ့ အစိတ်အပိုင်း မလိုအပ်တာပါ။ Docker မှာဆိုရင် ဒီ daemon က အကုန်လုံးကို ထိန်းချုပ်ထားပေမယ့် Podman ကတော့ ပိုပြီး လွတ်လပ်တဲ့ ချဉ်းကပ်ပုံမျိုး သုံးပါတယ်။ ဒါကြောင့် လုံခြုံရေးပိုင်းမှာ စိတ်ချရမှု ပိုလိုတယ်ဆိုတဲ့ သူတွေက Podman ကို ရွေးတတ်ကြပါတယ်။

နောက်တစ်ခုက CRI-O။ ဒါကတော့ Kubernetes လို Container orchestration ကိရိယာတွေနဲ့ အလုပ်လုပ်ဖို့ အထူးပြုထားတဲ့ ပေါ့ပါးတဲ့ Container runtime တစ်ခုပါ။ သူက ရိုးရှင်းပြီး Kubernetes လို ပလက်ဖောင်းတွေမှာ ချောချောမွေ့မွေ့ အလုပ်လုပ်ဖို့ ဒီဇိုင်းထုတ်ထားတာမို့ အကြီးစား ပရောဂျက်တွေမှာ သုံးလေ့ရှိပါတယ်။

ဒါ့အပြင် rkt (အသံထွက် “rocket”) ဆိုတဲ့ နောက်ထပ် ရွေးချယ်စရာတစ်ခုလည်း ရှိခဲ့ဖူးပါတယ်။ ဒါပေမယ့် အခုနောက်ပိုင်း သူ့ကို သိပ်မတွေ့ရတော့ပါဘူး။ ဒါက နည်းပညာလောကမှာ တခါတလေ ဖြစ်တတ်တာပါ။ တစ်ခုခုက လွှမ်းမိုးလာရင် တခြားဟာတွေ အနောက်ကို ကျန်ခဲ့တတ်ပါတယ်။

ဒီတော့ Containerization မှာ Docker တစ်ခုတည်း မဟုတ်ဘူးဆိုတာ သိလိုက်ရပြီပေါ့။ ဒါပေမယ့် ဒီလောက် ရွေးချယ်စရာတွေ ရှိတဲ့ အခါ Docker ကို ဘာကြောင့် လူတွေ အများကြီး သုံးနေကြတာလဲဆိုတာ သိချင်စရာ ဖြစ်လာမှာပဲ။ အဲဒါကို နည်းနည်း ဆက်ပြီး ကြည့်ရအောင်။

Docker ကို ဘာကြောင့် အသုံးပြုသလဲ?

Docker ဆိုတာ ၂၀၁၃ မှာ စတင်မိတ်ဆက်ခဲ့တဲ့ Containerization ကိရိယာတစ်ခုပါ။ သူ ပေါ်လာပြီးကတည်းက ဆော့ဖ်ဝဲလ် တည်ဆောက်တဲ့ နည်းလမ်းကို အတော်လေး ပြောင်းလဲခဲ့ပါတယ်။ ဒါပေမယ့် ဘာကြောင့် ဒီလောက် ရေပန်းစားနေတာလဲ? အကြောင်းရင်းတွေကို တစ်ခုချင်း ခွဲပြီး ပြောပြပါမယ်။

၁. အလွယ်တကူ အသုံးပြုနိုင်မှု
Docker ရဲ့ အကြီးမားဆုံး အားသာချက်က သူ့ကို သုံးရတာ ရိုးရှင်းတယ်ဆိုတာပါ။ ဥပမာ၊ သင်ဟာ ဆော့ဖ်ဝဲလ်တစ်ခု တည်ဆောက်နေတယ်ဆိုပါစို့။ အဲဒီဆော့ဖ်ဝဲလ်က အလုပ်လုပ်ဖို့ သတ်မှတ်ထားတဲ့ ပတ်ဝန်းကျင်—ဆိုပါစို့ Python 3.9 နဲ့ သီးသန့် libraries တချို့—လိုအပ်တယ်။ ဒါကို Docker မှာ “Dockerfile” ဆိုတဲ့ ဖိုင်လေးတစ်ခုနဲ့ ရေးလိုက်၊ “docker build” ဆိုတဲ့ အမိန့်ပေးလိုက်ရုံနဲ့ အဲဒီ ပတ်ဝန်းကျင်ကို အလိုအလျောက် ဖန်တီးပေးပါတယ်။ ပြီးရင် “docker run” ဆိုတဲ့ အမိန့်နဲ့ ချက်ချင်း အလုပ်စလုပ်လို့ ရပါတယ်။ ဒီလောက် လွယ်တာကြောင့် အသစ်စတင်သူတွေရော၊ အတွေ့အကြုံရှိသူတွေရော Docker ကို သဘောကျကြတာပါ။

၂. တသမတ်တည်းဖြစ်မှု
Docker ရဲ့ နောက်ထပ် အကြီးမားတဲ့ အကျိုးကျေးဇူးက “It works on my machine” ဆိုတဲ့ ပြဿနာကို ဖြေရှင်းပေးတာပါ။ ဆော့ဖ်ဝဲလ် တည်ဆောက်သူတွေ မကြာခဏ ကြုံရတဲ့ ပြဿနာတစ်ခုက သူတို့ရဲ့ ကွန်ပျူတာမှာ အလုပ်လုပ်တဲ့ ပရိုဂရမ်က တခြားနေရာမှာ အလုပ်မလုပ်တာပါ။ Docker က ဒီပြဿနာကို ဖြေရှင်းပေးတယ်။ ဘယ်လိုလဲဆိုတော့ Container တစ်ခုထဲမှာ ဆော့ဖ်ဝဲလ်အလုပ်လုပ်ဖို့ လိုအပ်တဲ့ အရာအားလုံးကို ထည့်ပြီး အဲဒီ Container ကို ဘယ်စက်မှာဖွင့်ဖွင့် အတူတူပဲ အလုပ်လုပ်အောင် လုပ်ပေးလို့ပါ။ ဥပမာ၊ သင်ဟာ ဂိမ်းတစ်ခု တည်ဆောက်ပြီး Docker Container ထဲမှာ ထည့်လိုက်တယ်ဆိုရင် အဲဒီ Container ကို သင့်လက်တော့မှာရော၊ ဆာဗာမှာရော၊ သူငယ်ချင်းရဲ့ ကွန်ပျူတာမှာရော ဖွင့်လိုက်ရင် အလုပ်လုပ်ပုံ အတူတူပါပဲ။

၃. ပေါ့ပါးပြီး မြန်ဆန်မှု
Containers အကြောင်း ပြောတုန်းက သူတို့ရဲ့ ပေါ့ပါးမှုကို ထည့်ပြောခဲ့ပြီးပြီဆိုတာ မှတ်မိမှာပါ။ Docker က ဒီ အားသာချက်ကို အပြည့်အဝ အသုံးချပေးပါတယ်။ Virtual Machine တစ်ခုကို ဖွင့်ဖို့ မိနစ်အနည်းငယ် ကြာနိုင်ပေမယ့် Docker Container တစ်ခုက စက္ကန့်ပိုင်းအတွင်းမှာပဲ အလုပ်စလုပ်နိုင်ပါတယ်။ ဒါကြောင့် ဆော့ဖ်ဝဲလ်ကို အမြန်စမ်းသပ်ချင်တယ်၊ ဖြန့်ချိချင်တယ်ဆိုတဲ့ သူတွေအတွက် Docker က အကောင်းဆုံး ရွေးချယ်မှုပါ။

၄. အသိုင်းအဝိုင်းနဲ့ ပံ့ပိုးမှု
Docker မှာ ကြီးမားတဲ့ အသိုင်းအဝိုင်း (community) ရှိပါတယ်။ Docker Hub ဆိုတဲ့ နေရာမှာ သန်းနဲ့ချီတဲ့ အဆင်သင့် Container ပုံစံတွေ (images) ရှိတာမို့ သင်လိုချင်တဲ့ ဆော့ဖ်ဝဲလ်ကို အစကနေ မတည်ဆောက်ပဲ အလွယ်တကူ ယူသုံးလို့ ရပါတယ်။ ဥပမာ၊ သင်ဟာ ဝက်ဘ်ဆာဗာတစ်ခု လိုချင်တယ်ဆိုရင် “nginx” ဆိုတဲ့ Container image ကို Docker Hub ကနေ ဒေါင်းလုပ်ဆွဲပြီး ချက်ချင်း အသုံးပြုလို့ ရပါတယ်။ ဒီလို အဆင်သင့် ရတာက အချိန်ကုန်သက်သာပြီး အလုပ်ကို ပိုမြန်စေပါတယ်။

၅. အကြီးစား စီမံခန့်ခွဲမှုအတွက် အဆင်ပြေ
Docker က Kubernetes လို orchestration ကိရိယာတွေနဲ့ တွဲသုံးလို့ အရမ်းကောင်းပါတယ်။ ဥပမာ၊ သင်ဟာ အက်ပ်တစ်ခုကို သုံးစွဲသူ သန်းချီသုံးနိုင်အောင် ဖြန့်ချိချင်တယ်ဆိုရင် Docker Containers တွေကို Kubernetes နဲ့ တွဲပြီး အကြီးစားစီမံလို့ ရပါတယ်။ ဒါက ကုမ္ပဏီကြီးတွေမှာ Docker ကို မရမက သုံးနေကြရတဲ့ အကြောင်းရင်းတစ်ခုပါ။

ဘယ်တော့ ဘာကို သုံးမလဲ?

Docker က လွယ်ကူပြီး လူကြိုက်များတယ်ဆိုပေမယ့် အမြဲတမ်း အကောင်းဆုံး ရွေးချယ်မှု ဖြစ်မယ်လို့ မဆိုလိုပါဘူး။ ဥပမာ၊ သင်ဟာ လုံခြုံရေးကို အလွန်အမင်း ဦးစားပေးတဲ့ ပရောဂျက်တစ်ခုမှာ လုပ်နေတယ်ဆိုရင် Podman လို daemon မပါတဲ့ ရွေးချယ်မှုက ပိုကောင်းနိုင်ပါတယ်။ CRI-O ကတော့ Kubernetes နဲ့ တိုက်ရိုက် ပေါင်းစပ်ထားတဲ့ ပရောဂျက်တွေအတွက် ပိုသင့်တော်ပါတယ်။ ဒါပေမယ့် လူအများစုအတွက်တော့ Docker ရဲ့ အသုံးပြုရလွယ်ကူမှု၊ အသိုင်းအဝိုင်း ပံ့ပိုးမှု၊ ပြီးတော့ ပေါ့ပါးမှုက သူ့ကို နံပါတ်တစ် ရွေးချယ်မှု ဖြစ်စေတာပါ။


ဒီလောက်ဆိုရင် Containerization မှာ Docker အပြင် ဘာတွေရှိလဲ၊ Docker ကို ဘာကြောင့် သုံးကြလဲဆိုတာ ရှင်းသွားမယ်ထင်ပါတယ်။

Scroll to Top