ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Docker က single container တစ်ခုကို build/run/ship လုပ်ဖို့ tool ပါ — `docker run` လို့ ရိုက်ရင် container တစ်ခု run ပါတယ်။ Kubernetes ကတော့ container (Docker ဒါမှမဟုတ် containerd) ရာနဲ့ချီပြီး run နေတာကို coordinate လုပ်ပေးတဲ့ layer တစ်ခုပါ — 'ဘယ် server ပေါ်မှာ run မလဲ'၊ 'crash ရင် ဘယ်သူပြန် restart မလဲ'၊ 'container တွေအချင်းချင်း ဘယ်လို ဆက်သွယ်မလဲ' ဆိုတာကို စီမံပေးပါတယ်။ Docker Compose ကတော့ local development အတွက် container အများကို ချိတ်ဆက်ဖို့ (Kubernetes ရဲ့ light-weight version လိုမျိုး) tool ပါ — Kubernetes ကတော့ production scale အတွက် ဒီ idea ကို ပိုကြီးမားစွာ တိုးချဲ့ထားတာပါ။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Web app တစ်ခု တည်ဆောက်တဲ့အခါ Dockerfile ရေးပြီး `docker build` နဲ့ image တည်ဆောက်ပါတယ် (ဒါက Docker အလုပ်)။ Local မှာ frontend + backend + database ကို တစ်ပြိုင်နက် run ချင်ရင် Docker Compose သုံးလို့ရပါတယ်။ Production မှာတော့ server ၁၀ လုံးပေါ်မှာ container ၁၀၀ ကို run ချင်ရင်၊ traffic ကို load balance လုပ်ချင်ရင်၊ server တစ်လုံးကျရင် container တွေကို ကျန်တဲ့ server ဆီ ရွှေ့ချင်ရင် — အဲဒါက Kubernetes အလုပ်ပါ။
အတူတူ ကြည့်မယ်
Layer What it does
--------------------------------------------------------
Dockerfile → How to build ONE container image
docker run → Run ONE container locally
docker-compose.yml → Run a FEW containers together, locally
Kubernetes → Run MANY containers, across MANY servers,
self-healing, auto-scaling, production-gradeDocker, Docker Compose, Kubernetes သုံးခုရဲ့ scope ကို ခွဲခြားနိုင်မည်။၅ မိနစ် စမ်းကြည့်
Blog site တစ်ခု (frontend + backend + database) ကို (၁) local development အတွက် ဘာသုံးမလဲ (၂) production (server ၁၀ လုံး) အတွက် ဘာသုံးမလဲ ဆုံးဖြတ်ပြီး ဘာကြောင့်လဲ ရေးကြည့်ပါ။
သတိလေးတစ်ချက်
Kubernetes ကို install လိုက်ရင် Docker မလိုတော့ဘူးလို့ မထင်ပါနှင့် — image build/tag/push အဆင့်တွေအတွက် Docker (ဒါမှမဟုတ် Docker-compatible tool) အရင်လိုအပ်ဆဲပါ။