รัน Redis ด้วย Docker
Docker คือวิธีที่เร็วที่สุดในการเริ่มใช้ Redis บนเครื่องของคุณ
หัวข้อที่มีชื่อว่า “Docker คือวิธีที่เร็วที่สุดในการเริ่มใช้ Redis บนเครื่องของคุณ”คุณไม่จำเป็นต้องติดตั้ง Redis บนเครื่องของคุณ เพียงคำสั่ง docker run เดียว ก็สามารถดึง official image และเริ่มเซิร์ฟเวอร์ที่พร้อมใช้งานได้ภายในไม่กี่วินาที
อธิบายคำสั่งพื้นฐาน
หัวข้อที่มีชื่อว่า “อธิบายคำสั่งพื้นฐาน”docker run -d --name redis -p 6379:6379 redis:7-alpine| Flag | ความหมาย |
|---|---|
-d | รันในโหมด detached (background) เพื่อให้ terminal ของคุณยังคงใช้งานได้ |
--name redis | ตั้งชื่อให้ container เพื่อให้อ้างอิงได้ในคำสั่งต่อ ๆ ไป |
-p 6379:6379 | เผยแพร่ port 6379 จาก container ไปยัง host บน port เดียวกัน |
redis:7-alpine | ใช้ official Redis 7 image ที่สร้างบน Alpine Linux — เล็กและเร็ว |
เชื่อมต่อด้วย redis-cli
หัวข้อที่มีชื่อว่า “เชื่อมต่อด้วย redis-cli”เมื่อ container กำลังทำงาน ให้เปิด interactive CLI session ภายใน container:
docker exec -it redis redis-clidocker exec รันคำสั่งภายใน container ที่กำลังทำงานอยู่ -it จัดสรร interactive TTY เพื่อให้คุณได้รับ prompt 127.0.0.1:6379> ที่คุ้นเคย จากนั้นคุณสามารถรันคำสั่ง Redis ใด ๆ ก็ได้
เพิ่ม persistence ด้วย named volume
หัวข้อที่มีชื่อว่า “เพิ่ม persistence ด้วย named volume”โดยค่าเริ่มต้น container จะเก็บข้อมูลในเลเยอร์ชั่วคราวที่จะหายไปเมื่อคุณลบ container แนบ named volume เพื่อเก็บข้อมูลข้ามการรีสตาร์ท:
docker run -d --name redis -p 6379:6379 -v redisdata:/data redis:7-alpineDocker สร้าง volume redisdata โดยอัตโนมัติ path /data คือที่ที่ official Redis image เขียนไฟล์ snapshot dump.rdb
วงจรชีวิตของ Container
หัวข้อที่มีชื่อว่า “วงจรชีวิตของ Container”# หยุด container ที่กำลังทำงาน (Redis จะ shutdown อย่างสะอาด)docker stop redis
# เริ่มใหม่อีกครั้ง — ข้อมูลใน named volume ยังคงอยู่docker start redis
# ลบ container ทั้งหมด (volume ยังคงอยู่เว้นแต่คุณจะลบด้วย)docker rm redisดู logs
หัวข้อที่มีชื่อว่า “ดู logs”# แสดง log ทั้งหมดที่มีจนถึงตอนนี้docker logs redis
# ติดตาม log แบบ real-time (กด Ctrl-C เพื่อหยุด)docker logs -f redislogs จะแสดง Redis startup banner, port ที่กำลัง listen อยู่, และคำเตือนต่าง ๆ — มีประโยชน์มากในการวินิจฉัยปัญหาการตั้งค่า
docker run -d --name redis -p 6379:6379 redis:7-alpine
docker exec -it redis redis-cliข้อแลกเปลี่ยน
หัวข้อที่มีชื่อว่า “ข้อแลกเปลี่ยน”| ตัวเลือก | Benefit | Cost |
|---|---|---|
| รันแบบไม่ mount volume | เริ่มต้นเร็ว เหมาะกับทดลองใช้งานชั่วคราว | ข้อมูลหายทันทีเมื่อ docker rm container |
แนบ named volume (-v redisdata:/data) | ข้อมูลอยู่รอดข้าม restart/recreate container | ต้องจัดการ volume lifecycle เอง (backup, cleanup) เพิ่มความซับซ้อน |
รัน container ด้วยค่าเริ่มต้นจาก docker run ตรง ๆ | สะดวก เหมาะกับ local dev | ไม่มี password, ไม่มี TLS, ไม่เหมาะเอาไป production ตรง ๆ |
ข้อผิดพลาดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ข้อผิดพลาดที่พบบ่อย”- ลืมแนบ volume แล้วสงสัยว่าทำไมข้อมูลหาย — ถ้าไม่ mount
/dataไปยัง named volume ข้อมูลทั้งหมดจะอยู่ใน writable layer ของ container เท่านั้น พอdocker rmข้อมูลหายถาวร - เปิด
-p 6379:6379แล้วเผยแพร่ port ออกสู่อินเทอร์เน็ตโดยไม่มี firewall — official image ไม่ได้ตั้งค่า authentication มาให้ ถ้า bind กับ0.0.0.0โดยไม่กรอง network ใครก็เชื่อมต่อและรันคำสั่งได้ - รัน container โดยไม่ตั้ง
--requirepass— เหมาะสำหรับทดลองบนเครื่อง local เท่านั้น ก่อนใช้งานจริงต้องตั้งรหัสผ่านหรือใช้ ACL เสมอ
💡 ตัวอย่างจากของจริง
GitHub — ใช้ Redis สำหรับงาน caching และ session หลายส่วนในระบบ โดยใน environment สำหรับ dev/test มักรันผ่าน container คล้ายกับที่สอนในบทนี้ ก่อนขึ้น production จริงบน infrastructure ที่ hardened แล้ว
Twitter — แม้ production จะรันบน infrastructure ขนาดใหญ่ แต่ทีม dev ภายในมักใช้ Redis container เดียวกันนี้เพื่อจำลอง timeline cache ตอนพัฒนาและทดสอบ local