Thuta Learning
ရှာဖွေရန်
BasicDevOpsintermediate

Docker vs Kubernetes

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

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Docker vs Kubernetes ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် kubectl command/YAML ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

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 အလုပ်ပါ။

အတူတူ ကြည့်မယ်

text
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-grade
You should see
Docker, Docker Compose, Kubernetes သုံးခုရဲ့ scope ကို ခွဲခြားနိုင်မည်။

၅ မိနစ် စမ်းကြည့်

Blog site တစ်ခု (frontend + backend + database) ကို (၁) local development အတွက် ဘာသုံးမလဲ (၂) production (server ၁၀ လုံး) အတွက် ဘာသုံးမလဲ ဆုံးဖြတ်ပြီး ဘာကြောင့်လဲ ရေးကြည့်ပါ။

သတိလေးတစ်ချက်

Kubernetes ကို install လိုက်ရင် Docker မလိုတော့ဘူးလို့ မထင်ပါနှင့် — image build/tag/push အဆင့်တွေအတွက် Docker (ဒါမှမဟုတ် Docker-compatible tool) အရင်လိုအပ်ဆဲပါ။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Docker Compose နဲ့ Kubernetes ကို 'တူတယ်' လို့ ထင်ခြင်း — Compose က single-server local dev အတွက်၊ K8s က multi-server production အတွက်ပါ
  • Kubernetes ကို run ဖို့ Docker container image တွေ လိုအပ်တယ်ဆိုတာ မသိခြင်း — K8s က image ကို build မလုပ်ပါဘူး, run ရုံပါ

အခု ကိုယ်တိုင် စမ်းကြည့်

Blog site တစ်ခု (frontend + backend + database) ကို (၁) local development အတွက် ဘာသုံးမလဲ (၂) production (server ၁၀ လုံး) အတွက် ဘာသုံးမလဲ ဆုံးဖြတ်ပြီး ဘာကြောင့်လဲ ရေးကြည့်ပါ။

You'll know it worked when: Docker, Docker Compose, Kubernetes သုံးခုရဲ့ scope ကို ခွဲခြားနိုင်မည်။

Docker vs Kubernetes | Thuta Learning