ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
ဒီ lesson မှာ teaching အသစ်မရှိပါဘူး၊ အရင် lesson တွေမှာ လေ့လာခဲ့တဲ့ docker run, docker ps, docker exec, Dockerfile build concept တွေကို သင့်ဘာသာ command line ပေါ်မှာ run ကြည့်ပြီး memory ထဲ တွေ့ချက်ချ မြဲအောင် လုပ်ဖို့ ရည်ရွယ်ပါတယ်။ Image ကို pull လုပ်တာကနေ container run လုပ်တာအထိ၊ ပြီးရင် container ထဲကို ဝင်ပြီး command run ကြည့်တာအထိ hands-on အဆင့်ဆင့် practice လုပ်ရပါမယ်။ ဒီလို လက်တွေ့ run ကြည့်တဲ့အခါ image နဲ့ container ဘယ်လိုကွာလဲဆိုတာကို ပိုကောင်းကောင်း သဘောပေါက်လာပါလိမ့်မယ်။ Dockerfile ကိုယ်တိုင်ရေးပြီး build ကြည့်တာကလည်း docker build workflow တစ်ခုလုံးကို ပြန်ပြန်လက်တွေ့ လုပ်ကြည့်ခွင့်ရစေပါတယ်။
လေ့ကျင့်ခန်းများ
Task 1 - nginx image ကို docker pull nginx နဲ့ ဆွဲပြီး docker run -d -p 8080:80 --name my-nginx nginx နဲ့ background မှာ run ပါ။ Task 2 - docker ps command run ကြည့်ပြီး running container ရဲ့ NAME, PORTS column ကို note လုပ်ပါ၊ docker ps -a နဲ့ stopped container များပါ ကြည့်ပါ။ Task 3 - docker exec -it my-nginx bash နဲ့ container ထဲဝင်ပြီး echo hello > test.txt နဲ့ file တစ်ခု create လုပ်ပါ၊ ပြီးရင် exit ထွက်ပါ။ Task 4 - simple Python script တစ်ခုအတွက် Dockerfile ကိုယ်တိုင်ရေးပြီး docker build -t my-app . နဲ့ image build လုပ်ကြည့်ပါ။
Code နမူနာ
# Task 1: pull + run
docker pull nginx
docker run -d -p 8080:80 --name my-nginx nginx
# Task 2: list containers
docker ps
docker ps -a
# Task 3: exec into container
docker exec -it my-nginx bash
# container ထဲမှာ:
# echo hello > test.txt
# cat test.txt
# exit
# Task 4: own Dockerfile
# Dockerfile
# FROM python:3.11-slim
# WORKDIR /app
# COPY app.py .
# CMD ["python", "app.py"]
docker build -t my-app .
docker run my-appCommand လေးခုစလုံးကို error မတက်ဘဲ run ပြီးရင် container running state ရောက်နေမယ်၊ exec ထဲက file ကိုလည်း cat နဲ့ ဖတ်ရရမယ်၊ ကိုယ်ပိုင် image ကလည်း build success ဖြစ်ပြီး run လို့ရရမယ်။၅ မိနစ် စမ်းကြည့်
5 minutes အတွင်း nginx container ကို run လုပ်ပြီး browser ကနေ localhost:8080 ကို ဝင်ကြည့်ပါ၊ default nginx welcome page ပေါ်လာရင် အောင်မြင်ပါပြီ။
သတိလေးတစ်ချက်
Practice ပြီးတိုင်း docker stop နဲ့ docker rm ကနေ container တွေကို ရှင်းပေးပါ၊ မဟုတ်ရင် container အများကြီး ကျန်နေပြီး name ထပ်တွေ့တဲ့ error တွေ ကြုံရနိုင်ပါတယ်။