Developer တိုင်း Docker လေ့လာထားဖို့လိုတယ်

Developer တိုင်း Docker ကိုလေ့လာထားဖို့လိုတယ်။ Application ကို deploy လုပ်ဖို့အတွက် server ထဲဝင် npm တွေ composer တွေ NodeJS တွေ JRE တွေ install ထည့်ပြီး source code ကို run တဲ့ခေတ်က ကုန်သွားတာ ကြာလှပြီ။ 2016 လောက်ကတည်းက cool kid မှန်ရင် dockerize တော့ လုပ်ကြတာပဲ။

Dockerize လုပ်တယ်ဆိုတာက application ကို Operating System ပေါ်မှာ တိုက်ရိုက်တင်မ run ပဲ,သီးသန့်အကန့်လေးထည့် run ဖို့ပြင်ဆင်တာကိုပြောတာ။ ယေဘုယျ ပြောရရင် ဒီအတွက် Namespace နဲ့ cgroup ဆိုတဲ့ technology နှစ်ခုလိုအပ်တယ်။ Namespace သုံးပြီး process ၂ ခု တယောက်နဲ့တယောက် မမြင်ရအောင် သီးသန့် network သီးသန့် filesystem စသဖြင့် ခွဲထုတ်လို့ရတယ်။ cgroup ကိုသုံးပြီး ဘယ် process က CPU, RAM, I/O စသ​ဖြင့် ဘယ်လောက်သုံးခွင့်ရှိမယ်ဆိုတာ သတ်မှတ်လို့ရတယ်။

Dockerize လုပ်ခြင်းရဲ့ အားသာချက် ဘာတွေရှိမလဲဆိုရင် security ကောင်းတယ်။ process တခု အတိုက်အခိုက်ခံရခြင်းက ဘေးကဟာတွေကို လွယ်လွယ်နဲ့ မထိခိုက်စေဘူး။ ဘာလို့ဆို သူ့အကန့်နဲ့သူမို့ ဘေးပတ်ဝန်းကျင်မှာ ဘာတွေရှိလဲ မြင်မှမမြင်ရတာ။ ဒုတိယအားသာချက်က ပေါ့တယ်။ container process တခုစဖို့ စက္ကန့်ပိုင်းပဲ ကြာတယ်။ တကယ်လို့ အဲဒီနေရာမှာ VM တလုံး ဆောက်ရမယ်ဆို မိနစ်ပိုင်းလောက် ကြာနိုင်တယ်။ နောက်အားသာချက်တခုက npm လိုလို၊ composer လိုလို၊ NodeJS ပဲလိုလို၊ pip3 ပဲလိုလို၊ တခြားဘာ library ပဲလိုလို အကုန်ထည့် dockerize လုပ်ပြီး server ပေါ်တန်း run ရုံပဲ။ server ပေါ်ရောက်မှ တစစီ လိုက်စုစရာမလိုဘူး။ ဒီတော့ It works on my machine ဆိုတဲ့ ဆင်​ခြေမျိုး မလိုတော့ဘူး။ မင်းစက်ပေါ်ရရင် ဘယ်နေရာဖြစ်ဖြစ်ရမှာပဲ ဆိုတာမျိုး ဖြစ်သွားပြီ။

ဒါပေမယ့် သာမန် user တွေ namespace နဲ့ cgroup ကိုသုံးဖို့လွယ်လားဆို မလွယ်ဘူး။ ဒီပြဿနာကို ရှင်းဖို့ ကုမ္ပဏီတခုကနေ command တကြောင်း run ရုံနဲ့ container တခုကို လွယ်လယ့်ဆောက်လို့ရအောင် software တွေထုတ်ပေးခဲ့တယ်။ အဲဒီကုမ္ပဏီက Docker လို့ခေါ်တယ်။ Docker က container ခေတ်တခုကို စခဲ့ပေမယ့် ခုချိန်မှာတော့ Docker ကတခြား runtime တွေနဲ့ယှဥ်ရွေးချယ်စရာတွေထဲက တခုဆိုတာမျိုးပဲ ဖြစ်လာနေပြီ။ Rootless Daemon လိုအပ်တဲ့ Security focused team တွေက Podman ကိုရွေးလာသလို performance နဲ့ orchestration သမားတွေကလည်း CRI-O ဖြစ်လာတယ်။

ဒီတော့ developer တွေအနေနဲ့ နောက်ထပ် runtime အသစ်တွေကို မလိုက်နိုင်သေးဘူးဆိုရင်တောင် အနည်းဆုံး Docker ကိုတော့ မဖြစ်မနေ လေ့လာထားဖို့သင့်တယ်။