Docker Cheatsheet สำหรับนักพัฒนา: คำสั่งพื้นฐานที่ใช้ได้จริง
รวมคำสั่ง Docker พื้นฐานที่นักพัฒนาใช้งานจริง ตั้งแต่การตรวจสอบระบบ ดาวน์โหลด image รันคอนเทนเนอร์ ไปจนถึงการจัดการ volume, network และการทำความสะอาดอย่างปลอดภัย ใช้อ่านทบทวนหรือเซฟไว้เป็นคู่มือย่อได้ทันที

Docker Cheatsheet สำหรับนักพัฒนา: คำสั่งพื้นฐานที่ใช้ได้จริง
Docker เป็นเครื่องมือสำคัญสำหรับนักพัฒนายุคใหม่ เพราะช่วยให้เราสร้างสภาพแวดล้อมการทำงานที่สม่ำเสมอ ติดตั้งง่าย และย้ายไปรันบนเครื่องอื่นได้สะดวก บทความนี้รวบรวมคำสั่งพื้นฐานที่ใช้บ่อยในการทำงานจริง แบบสั้น กระชับ และหยิบไปใช้ได้ทันที
1) เริ่มต้นด้วยการตรวจสอบว่า Docker พร้อมใช้งานหรือไม่
ก่อนจะเริ่มใช้งาน ควรเช็กก่อนว่า Docker ทำงานอยู่ตามปกติ
docker versiondocker info
คำสั่งแรกใช้ดูเวอร์ชันของ Docker ทั้งฝั่ง client และ server ส่วนคำสั่งที่สองจะให้ข้อมูลภาพรวมของระบบ Docker ที่กำลังใช้งานอยู่ เช่น จำนวน container, image, driver และการตั้งค่าต่าง ๆ
2) เข้าใจแนวคิดพื้นฐานของ Docker
เพื่อให้ใช้งาน Docker ได้ไม่สับสน ควรแยกความหมายขององค์ประกอบหลักออกจากกันให้ชัดเจน
- Image = แม่แบบสำหรับสร้างแอปหรือบริการ
- Container = สิ่งที่รันขึ้นมาจาก image
- Volume = พื้นที่เก็บข้อมูลถาวร
- Network = ช่องทางให้คอนเทนเนอร์ติดต่อกัน
เมื่อเข้าใจ 4 คำนี้แล้ว การอ่านคำสั่ง Docker ส่วนใหญ่จะง่ายขึ้นมาก
3) ค้นหาและดาวน์โหลด Image จาก Registry
หากต้องการหา image ที่พร้อมใช้งานจาก registry สามารถใช้คำสั่ง:
docker search nginx
เมื่อเจอ image ที่ต้องการแล้ว ให้ดาวน์โหลดด้วยคำสั่ง:
docker pull nginx:latestdocker pull postgres:16
หลังดาวน์โหลดเสร็จ สามารถตรวจสอบ image ที่มีอยู่ในเครื่องได้ด้วย:
docker images
คำแนะนำที่สำคัญคือควรระบุเวอร์ชันให้ชัดเจน เช่น postgres:16 แทนการใช้ latest เพื่อช่วยลดความเสี่ยงจากความเปลี่ยนแปลงที่ไม่คาดคิด
4) การรันคอนเทนเนอร์แบบพื้นฐาน
เริ่มจากการรันคอนเทนเนอร์แบบง่ายที่สุด:
docker run nginx
กรณีนี้คอนเทนเนอร์จะรันแบบ foreground และสามารถหยุดได้ด้วย Ctrl+C
หากต้องการรันแบบ background หรือ detached mode ให้ใช้:
docker run -d nginx
และหากต้องการตั้งชื่อคอนเทนเนอร์เพื่อให้จำง่าย:
docker run -d --name web nginx
การตั้งชื่อช่วยให้การอ้างถึงคอนเทนเนอร์ในคำสั่งอื่น ๆ สะดวกขึ้นมาก เช่น ตอนดู log, restart หรือ stop
5) การแมพพอร์ตเพื่อเข้าถึงบริการจากเครื่องเรา
ถ้าต้องการเปิดให้เข้าถึงบริการภายในคอนเทนเนอร์จากเครื่องของเรา ต้องใช้การแมพพอร์ต
รูปแบบคำสั่งคือ:
-p พอร์ตเครื่องเรา:พอร์ตในคอนเทนเนอร์
ตัวอย่าง:
docker run -d --name web -p 8080:80 nginx
เมื่อรันแล้ว จะสามารถเข้าใช้งานผ่านเบราว์เซอร์ได้ที่:
http://localhost:8080
6) การส่งค่า Environment ให้คอนเทนเนอร์
บาง image ต้องการค่าตั้งต้นเพื่อเริ่มทำงาน เช่น รหัสผ่านของฐานข้อมูล
ตัวอย่าง:
docker run -d --name db -e POSTGRES_PASSWORD=pass postgres:16
การใช้ -e ช่วยกำหนด environment variable ให้กับคอนเทนเนอร์ เหมาะมากสำหรับการตั้งค่าระบบในขั้นต้น
7) การตรวจสอบสถานะและดู Log
เมื่อต้องการดูว่ามีคอนเทนเนอร์ใดกำลังรันอยู่บ้าง ใช้:
docker ps
หากต้องการดูทั้งหมด รวมถึงตัวที่หยุดไปแล้ว ใช้:
docker ps -a
ถ้าต้องการดู log แบบต่อเนื่องเพื่อตรวจสอบปัญหา:
docker logs -f web
คำสั่งนี้มีประโยชน์มากเวลา debug ระบบหรือเฝ้าดูพฤติกรรมของแอประหว่างทดสอบ
8) การเข้าไปทำงานภายในคอนเทนเนอร์
บางครั้งเราจำเป็นต้องเข้าไปดูไฟล์หรือรันคำสั่งภายในคอนเทนเนอร์โดยตรง
docker exec -it web sh
บาง image อาจรองรับ bash แทน:
docker exec -it web bash
คำสั่งนี้เหมาะสำหรับการตรวจสอบไฟล์ ค่าตั้งค่า หรือสภาพแวดล้อมภายในคอนเทนเนอร์
9) การคัดลอกไฟล์เข้าและออกจากคอนเทนเนอร์
Docker รองรับการคัดลอกไฟล์ระหว่างเครื่องเราและคอนเทนเนอร์
จากเครื่องเราเข้าไปในคอนเทนเนอร์:
docker cp ./index.html web:/usr/share/nginx/html/index.html
จากคอนเทนเนอร์กลับมายังเครื่องเรา:
docker cp web:/var/log/nginx/access.log ./access.log
เป็นคำสั่งที่มีประโยชน์เวลาแก้ไฟล์ด่วนหรือดึง log ออกมาตรวจสอบ
10) การหยุด เริ่มใหม่ รีสตาร์ต และลบคอนเทนเนอร์
คำสั่งพื้นฐานในการจัดการ lifecycle ของคอนเทนเนอร์มีดังนี้
- หยุดคอนเทนเนอร์:
docker stop web - เริ่มคอนเทนเนอร์อีกครั้ง:
docker start web - รีสตาร์ตในคำสั่งเดียว:
docker restart web - ลบคอนเทนเนอร์:
docker rm web - บังคับลบกรณีกำลังรันอยู่:
docker rm -f web
นอกจากนี้ยังสามารถลบ image ที่ไม่ต้องการได้ด้วย:
docker rmi nginx:latest
11) การดูการใช้ทรัพยากรของคอนเทนเนอร์
หากต้องการดูว่าคอนเทนเนอร์ใช้ CPU, RAM หรือทรัพยากรอื่นมากน้อยแค่ไหน ใช้:
docker stats
คำสั่งนี้ช่วยระบุได้ว่าคอนเทนเนอร์ตัวใดกำลังกินทรัพยากรผิดปกติ ซึ่งมีประโยชน์มากในงาน monitoring เบื้องต้น
12) Mount โฟลเดอร์จากเครื่องเราเพื่อใช้ในการพัฒนา
สำหรับงานพัฒนา การ mount โฟลเดอร์จากเครื่องเข้าไปในคอนเทนเนอร์ช่วยให้แก้โค้ดแล้วเห็นผลได้เร็วขึ้น
docker run -d --name web -p 8080:80 -v ./site:/usr/share/nginx/html:ro nginx
ในตัวอย่างนี้ Docker จะนำโฟลเดอร์ ./site จากเครื่องเราไปไว้ในตำแหน่งไฟล์เว็บของ Nginx ภายในคอนเทนเนอร์
ส่วน :ro หมายถึง read-only เพื่อป้องกันการแก้ไขไฟล์จากฝั่งคอนเทนเนอร์โดยไม่ตั้งใจ
13) การใช้ Volume สำหรับข้อมูลถาวร
หากต้องการเก็บข้อมูลให้คงอยู่แม้คอนเทนเนอร์จะถูกลบ ควรใช้ volume
สร้าง volume:
docker volume create pgdata
ใช้งาน volume กับ PostgreSQL:
docker run -d --name db -e POSTGRES_PASSWORD=pass -v pgdata:/var/lib/postgresql/data postgres:16
แนวทางนี้เหมาะมากสำหรับฐานข้อมูล เพราะข้อมูลจะไม่หายไปตามอายุของคอนเทนเนอร์
14) การใช้ Network เพื่อเชื่อมต่อบริการหลายตัว
Docker network ช่วยให้หลายคอนเทนเนอร์คุยกันได้สะดวกและปลอดภัยขึ้น
สร้าง network:
docker network create appnet
รันฐานข้อมูลใน network เดียวกัน:
docker run -d --name db --network appnet -e POSTGRES_PASSWORD=pass postgres:16
รันเว็บเซิร์ฟเวอร์ใน network เดียวกัน:
docker run -d --name web --network appnet -p 8080:80 nginx
เมื่ออยู่ใน network เดียวกัน คอนเทนเนอร์สามารถอ้างถึงกันได้ผ่านชื่อคอนเทนเนอร์ เช่น db หรือ web
15) เคล็ดลับที่ช่วยให้ใช้งาน Docker ได้อย่างปลอดภัยและเป็นระบบ
มีแนวปฏิบัติบางอย่างที่ช่วยลดปัญหาในการใช้งานระยะยาว
- อย่ารีบใช้
pruneล้างทุกอย่าง หากยังไม่แน่ใจว่าจะกระทบอะไรบ้าง - ตั้งชื่อ container และ volume ให้สื่อความหมาย
- ระบุ tag เวอร์ชันให้ชัดเจน เช่น
postgres:16แทนlatest
แนวทางเหล่านี้ช่วยให้ทีมทำงานร่วมกันง่ายขึ้น และลดความเสี่ยงจากการเผลอลบหรืออัปเดตสิ่งสำคัญโดยไม่ตั้งใจ
16) การทำความสะอาด Docker อย่างปลอดภัยขึ้น
เมื่อใช้งานไปสักพัก จะมี container และ image ที่ไม่ได้ใช้สะสมอยู่ ควรล้างอย่างระมัดระวัง
ลบคอนเทนเนอร์ที่หยุดแล้ว:
docker container prune
ลบ image ที่ dangling:
docker image prune
ดูภาพรวมก่อนว่าจะลบอะไรได้บ้าง:
docker system df
คำสั่งกลุ่มนี้ช่วยคืนพื้นที่ดิสก์ได้ดี โดยยังปลอดภัยกว่าการลบแบบครอบจักรวาล
สรุป
Docker เป็นเครื่องมือที่ช่วยให้นักพัฒนาจัดการสภาพแวดล้อม แอปพลิเคชัน และบริการต่าง ๆ ได้สะดวกขึ้นอย่างมาก หากจำคำสั่งพื้นฐานในบทความนี้ได้ คุณจะสามารถค้นหา image, รันคอนเทนเนอร์, ดู log, เชื่อมพอร์ต, ใช้ volume, ตั้งค่า network และดูแลระบบเบื้องต้นได้อย่างมั่นใจ
สำหรับการทำงานจริง แนะนำให้ฝึกใช้คำสั่งเหล่านี้กับโปรเจกต์เล็ก ๆ ก่อน แล้วค่อยต่อยอดไปสู่ Docker Compose หรือระบบ deployment ที่ซับซ้อนขึ้นในภายหลัง