Docker ရဲ့ အဓိကအချက်များ (Docker Components)
မင်္ဂလာပါ စာဖတ်သူတို့ရေ၊ အရင်အပိုင်းမှာ “Docker ဆိုတာ ဘာလဲ?” ဆိုတာကို ပြောပြခဲ့ပြီးပြီဆိုတော့ အခု Docker က ဘယ်လို အလုပ်လုပ်သလဲ၊ သူ့ထဲမှာ ဘာအရာတွေ ပါဝင်လဲဆိုတာကို နည်းနည်း ပိုလေ့လာကြည့်ရအောင်။ Docker ဆိုတာ ဆော့ဖ်ဝဲလ်တစ်ခုကို သေတ္တာထဲမှာ ထည့်ပြီး ဘယ်နေရာမှာ ဖွင့်ဖွင့် အလုပ်လုပ်အောင် လုပ်ပေးတယ်ဆိုတာ မှတ်မိမယ်ထင်ပါတယ်။ ဒါပေမယ့် အဲဒီလို လုပ်ဖို့ ဘယ်အရာတွေက အတူတူ ပူးပေါင်းလုပ်ဆောင်နေသလဲဆိုတာ သိထားရင် ပိုပြီး ရှင်းလာမှာပါ။ ဒီအရာတွေကို “Docker ရဲ့ အဓိကအချက်များ” ဒါမှမဟုတ် “Components” လို့ ခေါ်ပါတယ်။ ရိုးရှင်းအောင် တစ်ခုချင်း ရှင်းပြပြီး ဥပမာလေးတွေ ထည့်ပေးပါမယ်။ အဆင်သင့်ဖြစ်ပြီလား? စလိုက်ရအောင်။

၁. Docker Engine
Docker ရဲ့ အဓိက အချက်တစ်ခုက “Docker Engine” ပါ။ ဒါကို Docker ရဲ့ နှလုံးသားလို့ မြင်လိုက်ပါ။ Docker Engine က အက်ပ်တွေကို သေတ္တာထဲမှာ ထည့်တာ၊ အဲဒီသေတ္တာတွေကို ဖွင့်တာ၊ စီမံတာတွေ အကုန်လုပ်ပေးတဲ့ အဓိက အလုပ်သမားပါ။ ဒီ Engine မရှိရင် Docker ဆိုတာ အလုပ်လုပ်မှာ မဟုတ်ပါဘူး။
ဥပမာအနေနဲ့ သင်ဟာ မုန့်ဖုတ်စက်တစ်လုံးနဲ့ မုန့်ဖုတ်မယ်ဆိုပါစို့။ မုန့်ဖုတ်စက်က ဂျုံမှုန့်၊ သကြား၊ ဆီတွေကို ရောပြီး မုန့်ဖုတ်ပေးတယ် မဟုတ်လား။ Docker Engine ကလည်း အဲဒီလိုပါပဲ—အက်ပ်တစ်ခုကို အလုပ်လုပ်ဖို့ လိုအပ်တဲ့ အရာတွေကို စုပြီး Container တစ်ခုအဖြစ် ဖန်တီးပေးတယ်၊ ပြီးရင် အဲဒီ Container ကို ဖွင့်ပြီး အလုပ်လုပ်အောင် လုပ်ပေးပါတယ်။ ဒါက Docker Engine ရဲ့ အလုပ်ပါ။
၂. Docker Images
နောက်တစ်ခုက “Docker Images” ပါ။ ဒါကို သေတ္တာထဲထည့်ဖို့ အဆင်သင့်လုပ်ထားတဲ့ ပစ္စည်းတွေလို့ မြင်ပါ။ Docker Image ဆိုတာ အက်ပ်တစ်ခုကို အလုပ်လုပ်ဖို့ လိုအပ်တဲ့ အရာအားလုံးကို ထုပ်ပိုးထားတဲ့ ပုံစံတစ်ခုပါ။ ဒီထဲမှာ အက်ပ်ရဲ့ ကုဒ်၊ သူသုံးမယ့် ဆော့ဖ်ဝဲလ် အစိတ်အပိုင်းတွေ၊ သတ်မှတ်ချက်တွေ အကုန်ပါပါတယ်။
ဒါကို ဥပမာနဲ့ ပြောရရင် သင်ဟာ မုန့်ဖုတ်ဖို့ ပစ္စည်းတွေကို အိတ်တစ်လုံးထဲမှာ အဆင်သင့် ထည့်ထားတယ်ဆိုပါစို့။ အဲဒီအိတ်ထဲမှာ ဂျုံမှုန့်၊ သကြား၊ ဆီ၊ ပြီးတော့ မုန့်ဖုတ်နည်းညွှန်ကြားချက်ပါ ပါတယ်။ ဒီအိတ်ကို ဘယ်သူ့ကို ပေးပေး ဖွင့်ပြီး မုန့်ဖုတ်လို့ ရမှာပါ။ Docker Image ကလည်း အဲဒီလိုပါ—အက်ပ်တစ်ခုအတွက် လိုအပ်တာ အကုန်ပါတဲ့ ပုံစံတစ်ခုဖြစ်ပြီး အဲဒီ Image ကနေ Container ကို ဖန်တီးလို့ ရပါတယ်။ ဒါကြောင့် Image က Container ရဲ့ အစောပိုင်း ပုံစံလို့ ပြောလို့ ရပါတယ်။
၃. Docker Containers
အခု “Docker Containers” ကို ပြောရအောင်။ ဒါက အရင်ပြောခဲ့တဲ့ သေတ္တာပါပဲ။ Container ဆိုတာ Docker Image ကနေ ဖန်တီးထားတဲ့ အရာဖြစ်ပြီး အဲဒီထဲမှာ အက်ပ်က တကယ် အလုပ်လုပ်ပါတယ်။ Image က အဆင်သင့် ထုပ်ပိုးထားတဲ့ ပစ္စည်းတွေဆိုရင် Container က အဲဒီပစ္စည်းတွေကို ဖွင့်ပြီး အလုပ်စလုပ်နေတဲ့ အခြေအနေပါ။
ဥပမာအနေနဲ့ အရင်က မုန့်ဖုတ်အိတ်ကို ပြန်သုံးရအောင်။ သင်က အဲဒီအိတ်ကို ဖွင့်ပြီး မုန့်ဖုတ်စက်ထဲ ထည့်၊ ဖုတ်လိုက်တဲ့အခါ မုန့်ဖုတ်နေတဲ့ အခြေအနေကို Container လို့ မြင်လိုက်ပါ။ Docker Container ကလည်း Image ကို ဖွင့်ပြီး အက်ပ်ကို အလုပ်လုပ်အောင် လုပ်ပေးတာပါ။ ဒါကြောင့် Container က Docker ရဲ့ အဓိက အလုပ်လုပ်တဲ့ နေရာလို့ ပြောလို့ ရပါတယ်။
၄. Docker Hub
နောက်တစ်ခုက “Docker Hub” ပါ။ ဒါက Docker Image တွေကို သိမ်းထားပြီး မျှဝေပေးတဲ့ နေရာတစ်ခုပါ။ ဒါကို စျေးဆိုင်ကြီးတစ်ခုလို့ မြင်ပါ။ သင်ဟာ အက်ပ်တစ်ခု လုပ်ချင်ပေမယ့် အစကနေ အကုန်လုပ်ဖို့ အချိန်မရှိဘူးဆိုပါစို့။ Docker Hub မှာ သွားပြီး အဆင်သင့် Image တွေကို ယူလို့ ရပါတယ်။
ဥပမာ၊ သင်ဟာ ဝက်ဘ်ဆိုက်တစ်ခု လုပ်ချင်တယ်ဆိုရင် Docker Hub မှာ “nginx” ဆိုတဲ့ ဝက်ဘ်ဆာဗာ Image ရှိပါတယ်။ အဲဒါကို ဒေါင်းလုပ်ဆွဲပြီး သင့်ကွန်ပျူတာမှာ ဖွင့်လိုက်ရုံနဲ့ ဝက်ဘ်ဆာဗာတစ်ခု အလုပ်လုပ်နေပါပြီ။ ဒါက စျေးဆိုင်ကြီးထဲက အဆင်သင့် မုန့်ဖုတ်အိတ်တွေ ဝယ်လာပြီး အိမ်မှာ ဖွင့်သုံးသလိုပါပဲ။ Docker Hub မှာ သန်းနဲ့ချီတဲ့ Image တွေ ရှိတာမို့ သင်လိုချင်တာကို အလွယ်တကူ ရှာပြီး သုံးလို့ ရပါတယ်။
၅. Docker Compose (အပိုဆောင်း အချက်တစ်ခု)
နောက်ဆုံး တစ်ခုအနေနဲ့ “Docker Compose” ကို ပြောပြပါမယ်။ ဒါက Docker ရဲ့ အဓိက အချက်တစ်ခုတော့ မဟုတ်ပေမယ့် အသုံးများလို့ ထည့်ပြောတာပါ။ Docker Compose ဆိုတာ Container အများကြီးကို တစ်ပြိုင်နက် စီမံဖို့ သုံးတဲ့ ကိရိယာပါ။
ဥပမာ၊ သင်ဟာ ဝက်ဘ်ဆိုက်တစ်ခု လုပ်မယ်ဆိုရင် ဝက်ဘ်ဆာဗာ Container တစ်ခု၊ ဒေတာဘေ့စ် Container တစ်ခု လိုမယ် မဟုတ်လား။ ဒါကို တစ်ခုချင်း ဖွင့်မယ့်အစား Docker Compose နဲ့ ညွှန်ကြားချက်တစ်ခု ရေးပြီး အကုန်လုံးကို တစ်ခါတည်း ဖွင့်လို့ ရပါတယ်။ ဒါကို မုန့်ဖုတ်အိတ်တွေ အများကြီးကို တစ်ခါတည်း ဖွင့်ပြီး မုန့်ဖုတ်နေတာလို့ မြင်ပါ။ ဒါက အချိန်ကုန်သက်သာပြီး အလုပ်ကို ပိုလွယ်ကူစေပါတယ်။
အားလုံး ဘယ်လို အလုပ်လုပ်လဲ?
အခု ဒီ အချက်တွေ အားလုံးကို ပေါင်းစပ်ကြည့်ရအောင်။ Docker Engine က အဓိက အလုပ်လုပ်တဲ့ စက်ဖြစ်ပြီး Docker Images တွေကို ယူပြီး Containers တွေ ဖန်တီးပါတယ်။ Docker Hub ကတော့ အဲဒီ Images တွေကို ရှာပြီး ယူလို့ရတဲ့ စျေးဆိုင်ကြီးပါ။ အကယ်၍ Container အများကြီး လိုအပ်ရင် Docker Compose က အကုန်လုံးကို တစ်ပြိုင်နက် စီမံပေးပါတယ်။ ဒီလိုနဲ့ ဒီ အချက်တွေ အားလုံးက အတူတူ ပူးပေါင်းပြီး Docker ကို အလုပ်လုပ်အောင် လုပ်ပေးတာပါ။
ဒီလောက်ဆိုရင် Docker ရဲ့ အဓိကအချက်တွေ—Docker Engine၊ Images၊ Containers၊ Docker Hub၊ နဲ့ Docker Compose—အကြောင်း ရှင်းသွားမယ်ထင်ပါတယ်။