Monday, June 4, 2018

Overview for Container

Why do we need container?



Containers solution ဟာ ဆိုရင် Applications တွေကို အဆင်ပြေပြေ ချောချောမွေ့မွေ့ Environment တခုကနေ တခုကို လွယ်လွယ်ကူကူ RUN လို့ရအောင် လုပ်ပေးတဲ့ Solution တခုဖြစ်ပါတယ်။ ဆိုကြပါစို့။ Developer တယောက်က App တခုကို သူ့ရဲ့ ကိုယ်ပိုင် Machine မှာ Run တယ်။ အဆင်ပြေတယ်။ ဒါပေမယ့် အဲဒီမှာ Run ထားတဲ့ Code တွေကို တခြား Environment မှာ Run ကြည့်တဲ့အခါ အဆင်မပြေဖြစ်တယ်။ ဘာလို့လည်းဆိုတော့ သူ့ရဲ့ ကိုယ်ပိုင် Machine မှာ RUN ထားတဲ့ Environment နဲ့ တခြား Environment မှာရှိတဲ့ Version တွေ development environment server ရဲ့ config တွေက မတူညီတဲ့အတွက် အဆင်မပြေ ဖြစ်ကြတယ်။ ဆိုပါစို့ Appplication code တခုကို ကျနော်က Python 2 မှာ develop လုပ်ထားတယ်။ အဲဒါကို Python 3 မှာ Run ချင်တယ်ဆိုရင် Python 3 နဲ့ကိုက်ညီမယ့် Code တွေကို ပြန်ပြုပြင် ရေးဖို့ လိုအပ်

လာလိမ့်မယ်။ ဒီ Issue ဟာ developer သမားတွေအတွက်တော့ တကယ့် Giant problem ပဲ။ ဒါကြောင့် Applications တွေအားလုံးဟာ ဘယ်နေရာ၊ ဘယ်စက်မှာပဲ ဖြစ်ဖြစ် လွယ်လွယ်ကူကူ အဆင်ပြေပြေ ချောချောမွေ့မွေ့ Run စေဖို့အတွက် Containers Solution ကို လိုအပ်လာခြင်းပဲဖြစ်ပါတယ်။

What is Containerization(Container)?



Containerization ဆိုတာ Hypervisor virtualization လမ်းကြောင်းဆီကိုသွားတဲ့ alternative solution မျိုးဖြစ်ပီး အရမ်းပေါ့ပါးပီး သုံးရတာ ease ဖြစ်စေတယ်။ မည်သည့် Application  အမျိုးအစားမဆို Container ထဲမှာ ကောင်းကောင်းRunနိုင်သလို အဆင်ပြေပြေ ချောချောမွေ့မွေ့ဖြစ်စေနိုင်တယ်။ Dependencies, libraries and binaries တွေအတွက်လည်း တွေးပြီး ပူပင်နေစရာမလိုဘူး။ ဘာလို့လဲဆိုတော့ Container က Applications တွေအတွက် လိုအပ်တဲ့ Dependencies, Libraries and binaries တွေနဲ့ သီခြား Isolated environment ကို တည်ဆောက်ပေးထားပြီး လွယ်လွယ်ကူကူ အဆင်ပြေပြေ Run နိုင်ဖို့အတွက် ဖြစ်တယ်။ Container တွေရဲ့ ရည်ရွယ်ချက် Design ဟာ Physical, Virtual and any cloud တွေပေါ်မှာ ကောင်းကောင်းမွန်မွန် အဆင်ပြေပြေ RUN နိုင်ဖို့ဖြစ်တယ်။

Different between Containerization and virtualization?



Virtualization Tech ဟာ Single Hardware ပေါ်မှာ Multi operating system တွေကို Run စေနိုင်ပါတယ်။ အဓိက ရည်ရွယ်ချက်ကတော့ ရှိပီးသား Hardware Resources တွေကို အကောင်းဆုံး Utilize လုပ်ပီး အဆင်ပြေပြေသုံးနိုင်ဖို့အတွက် ဖြစ်ပါတယ်။ Single Hardware Resource ပေါ်မှာ Multi Operating System(VMs) တွေ Run ပီး အဲဒီ OS(VMs) တွေပေါ်မှာ Applications တွေကို တသီးတသန့် Run ပီး အသုံးပြုကြပါတယ်။ ဥပမာ။ Vmware, Microsoft HyperV, Kvm , Xen and so on...

Container Tech တွေဟာ single operating system ပေါ်မှာ Run ကြပါတယ်။ ဆိုလိုတာက Container တော်တော်များများဟာ single operating system ကို share ပီးသုံးကြပါတယ်။ Container တခုချင်းစီဟာ single operating system ကို share ပီး အသုံးပြုကြပေမယ့် လိုအပ်တဲ့ dependencies, libraries and binaries တွေကတော့ Container တခုချင်းစီမှာ တသီးတခြား သီးသီးသန့်သန့်နဲ့ အသုံးပြုလို့ ရနိုင်ပါတယ်။ ဒါကြောင့် Containersation ကို Application-specific virtualization လို့ ခေါ်ဆိုနိုင်ပါတယ်။ Container ရဲ့ Design ဟာ Application mgmt issues တွေကို ပြေလည်စေဖို့အတွက်ဖြစ်ပြီး Virtualization ကို Replacement လုပ်ဖို့အတွက် မဟုတ်ပါ။

What's the docker on container?

Docker ဆိုတာ Containers တွေကို Manage လုပ်ဖို့အတွက် Tool တခုသာဖြစ်တယ်။ Docker ကို အသုံးပြုခြင်းအားဖြင့် Container တွေကို create လုပ်နိုင်တယ်။ Deploy လုပ်နိုင်သလို Application container တွေကို ပါ Run နိုင်ပါတယ်။