Docker ရဲ့ အဓိက Concept များ
ကျွန်တော် ဒီနေ့ပြောပြမှာကတော့ dockerအကြောင်းပဲ ဖြစ်ပါတယ်
Docker ဆိုတာ Application တွေကို လွယ်ကူမြန်ဆန်စွာ build, deploy, run လုပ်နိုင်အောင် ကူညီပေးတဲ့ platform တစ်ခုဖြစ်ပါတယ်။Docker က container ဆိုတဲ့ နည်းလမ်းကို အသုံးပြုပြီး Application ကို run စေပါတယ်။
Container တွေက ပေါ့ပါးတယ် မည်သည့် environment မဆို run နိုင်တယ် ငါ့စက်မှာ အလုပ်မလုပ်ဘူး” ဆိုတဲ့ environment ပြဿနာတွေကို လျှော့ချပေးနိုင်ပါတယ်။
Containers
Container ဆိုတာ Application တစ်ခု run ဖို့ လိုအပ်တဲ့ အရာအားလုံးကို (code, runtime, library, config) တစ်နေရာတည်းမှာ ထည့်ထားတဲ့ သီးခြား environment တစ်ခုလိုပဲ ဖြစ်ပါတယ်။ Server တစ်လုံးပေါ်မှာ container အများကြီးကို တစ်ခုနဲ့တစ်ခု မထိခိုက်ဘဲ run နိုင်ပါတယ်။
Example!
Container ကို သေတ္တာ လို့ယူဆမယ်ဆိုရင် အဲဒီသေတ္တာထဲမှာ Application run ဖို့ လိုအပ်သမျှ အကုန်ပါနေပါတယ်။
Images
Docker Image ဆိုတာ Container တစ်ခုကို ဖန်တီးဖို့ အသုံးပြုတဲ့ template ဖြစ်ပါတယ်။ Image ထဲမှာ OS အမျိုးအစား , Runtime (Python, Node.js စသည့်) , Library, config စတဲ့အရာတွေ သတ်မှတ်ထားပါတယ်။
Container = သေတ္တာ
Image = သေတ္တာလုပ်နည်း စာညွှန်း
Docker Hub ကနေ Image အဆင်သင့်တွေကို download လုပ်လို့ရသလို ကိုယ်တိုင် custom image လည်း ဖန်တီးနိုင်ပါတယ်။
Dockerfile
Dockerfile ဆိုတာ Docker Image တစ်ခုကို ဘယ်လိုဆောက်မလဲဆိုတာကို ရေးထားတဲ့ instruction file ဖြစ်ပါတယ်။ ဟင်းချက် recipe တစ်ခုလိုပဲ အရင်ဘာလုပ်မလဲ → နောက်ဘာလုပ်မလဲ ဆိုတာ တိတိကျကျ ရေးထားပါတယ်။ အောက်မှာ dockerfile တစ်ခုရေးပြထားပါတယ်။
1FROM ubuntu:20.04
2RUN apt-get update && apt-get install -y python3
3COPY . /app
4CMD ["python3", "app.py"]ဒီ dockerfile ရဲ့ အဓိပ္ပါယ်က
- Ubuntu ကို အခြေခံအဖြစ် သုံးမယ်
- Python install လုပ်မယ်
- App code ကို copy လုပ်မယ်
- Python app ကို run မယ် ဆိုတဲ့ အချက်တွေကို သတ်မှတ်ထားတာပါ။
Docker Engine
Docker Engine က Docker ရဲ့ အဓိက core ဖြစ်ပါတယ်။ Container တွေကို run ဖို့၊ Image တွေကို manage လုပ်ဖို့ တာဝန်ယူပါတယ်။ Docker Engine ထဲမှာ ပါဝင်တာတွေက —
- Docker Daemon - Background မှာ run နေပြီး container တွေကို ထိန်းချုပ်ပါတယ်။
- Docker CLI - docker run, docker build စတဲ့ command တွေနဲ့ Docker ကို ခိုင်းစေဖို့ အသုံးပြုပါတယ်။
Docker Hub
Docker Hub ဆိုတာ Docker Image တွေကို သိမ်းဆည်းထားတဲ့ cloud registry ဖြစ်ပါတယ်။ Mysql, Nginx, Redis စတဲ့ popular software image တွေကို အဆင်သင့် ရနိုင်ပါတယ်။ ကိုယ်လုပ်ထားတဲ့ Image ကိုလည်း Docker Hub ကို upload လုပ်ပြီး မျှဝေနိုင်ပါတယ်။
Portability & Consistency
Docker ရဲ့ အကြီးမားဆုံး အားသာချက်က စက်တစ်ခု မှာ run လို့ရရင် အခြား စက်တွေ serverတွေ မှာလည်း အတူတူပဲ run နိုင်တယ်။ ဘာကြောင့်လဲဆိုတော့ Application + Dependency အကုန်လုံးကို Container ထဲမှာ ထည့်ထားပြီးသား ဖြစ်လို့ပါ။
Isolation
Container တစ်ခုစီက သီးခြားစီ run ပါတယ်။ Container A မှာ ပြဿနာဖြစ်လည်း Container B ကို မထိခိုက်ပါဘူး။ အိမ်တစ်လုံးထဲမှာ အခန်းအမျိုးမျိုးခွဲထားသလို Application တစ်ခုစီကို ကိုယ်ပိုင်နေရာနဲ့ run ခိုင်းတာပါ။
Docker ကို ဘာကြောင့် သုံးသင့်လဲ?
- Environment တူညီမှု - Dev, Test, Production အားလုံးမှာ အတူတူ run နိုင်တယ်။
- Resource သက်သာမှု - VM လို OS တစ်ခုလုံးမလိုအပ်ဘဲ Host OS ကို share သုံးလို့ ပိုပေါ့ပါးတယ်။
- Deploy လွယ်ကူမှု - Container run လုပ်လိုက်တာနဲ့ App အလုပ်လုပ်ပြီ။
- Microservices Architecture - App ကြီးတစ်ခုကို Service အသေးအသေးတွေ ခွဲပြီး Container တစ်ခုစီနဲ့ manage လုပ်နိုင်တယ်။
ဒီနေ့တော့ ဒီလောက်ပါပဲ နောက်နေ့မှာ ပိုမိုက်တဲ့အကြောင်းတွေကိုဆက်တင်ပေးသွားပါအုန်းမယ်ဗျာ ကျေးဇူးတင်ပါတယ်
Discussion
Join the conversation
How do you feel about this article?
Comments
Sign in to join the conversation
Sign in to be the first to comment!
Share Your Article
Share with your professional network
Recent Articles

AWS - Application Load Balancer
Elastic Load Balancing (ELB) ELB ဆိုတာကတော့ request တွေကို တစ်နေရာတည်းမှ လက်ခံကာ Amazon EC2 instances၊ containers, etc.....

Terraform Day 3: Benefits of Terraform State
Terraform ကိုလေ့လာ တဲ့အခါ ကျွန််တော်တို့ရဲ့ Project Folder ထဲမှာ terraform.tfstate ဆိုတဲ့ ဖိုင်လေးကို တွေ့ဖူးကြပါလိမ့်မယ...

Terraform Day 2: Essential IaC Principles You Must Know
မနေ့ကတော့ Terraform အကြောင်း အကြမ်းဖျင်း Concept ကို ပြောပြခဲ့ပြီးပြီဆိုတော့ ဒီနေ့မှာတော့ Terraform ကို Professional ကျက...

TCP/IP Protocol
အားလုံးပဲမင်္ဂလာပါ။ ဒီနေ့ ကျွန်တော်တို့ TCP/IP Protocol အကြောင်း ဆွေးနွေးသွားပါမယ်။ ပထမဆုံးအနေနဲ့ TCP/IP ရဲ့ History လေး...

Terraform Day 1: Introduction to IAC and Terraform
ကျွန်တော်တို့ cloud အကြောင်း စပြောကြပြီဆိုရင် အရင်ဆုံး ခေါင်းထဲရောက်လာတာ Console ထဲဝင်၊ UI ကနေ ခလုတ်လေးတွေ လိုက်နှိပ်ပြီ...

