ข้ามไปยังเนื้อหา

รัน Redis ด้วย Docker

Docker คือวิธีที่เร็วที่สุดในการเริ่มใช้ Redis บนเครื่องของคุณ

หัวข้อที่มีชื่อว่า “Docker คือวิธีที่เร็วที่สุดในการเริ่มใช้ Redis บนเครื่องของคุณ”

คุณไม่จำเป็นต้องติดตั้ง Redis บนเครื่องของคุณ เพียงคำสั่ง docker run เดียว ก็สามารถดึง official image และเริ่มเซิร์ฟเวอร์ที่พร้อมใช้งานได้ภายในไม่กี่วินาที

Terminal window
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 — เล็กและเร็ว

เมื่อ container กำลังทำงาน ให้เปิด interactive CLI session ภายใน container:

Terminal window
docker exec -it redis redis-cli

docker exec รันคำสั่งภายใน container ที่กำลังทำงานอยู่ -it จัดสรร interactive TTY เพื่อให้คุณได้รับ prompt 127.0.0.1:6379> ที่คุ้นเคย จากนั้นคุณสามารถรันคำสั่ง Redis ใด ๆ ก็ได้

โดยค่าเริ่มต้น container จะเก็บข้อมูลในเลเยอร์ชั่วคราวที่จะหายไปเมื่อคุณลบ container แนบ named volume เพื่อเก็บข้อมูลข้ามการรีสตาร์ท:

Terminal window
docker run -d --name redis -p 6379:6379 -v redisdata:/data redis:7-alpine

Docker สร้าง volume redisdata โดยอัตโนมัติ path /data คือที่ที่ official Redis image เขียนไฟล์ snapshot dump.rdb

Terminal window
# หยุด container ที่กำลังทำงาน (Redis จะ shutdown อย่างสะอาด)
docker stop redis
# เริ่มใหม่อีกครั้ง — ข้อมูลใน named volume ยังคงอยู่
docker start redis
# ลบ container ทั้งหมด (volume ยังคงอยู่เว้นแต่คุณจะลบด้วย)
docker rm redis
Terminal window
# แสดง log ทั้งหมดที่มีจนถึงตอนนี้
docker logs redis
# ติดตาม log แบบ real-time (กด Ctrl-C เพื่อหยุด)
docker logs -f redis

logs จะแสดง Redis startup banner, port ที่กำลัง listen อยู่, และคำเตือนต่าง ๆ — มีประโยชน์มากในการวินิจฉัยปัญหาการตั้งค่า

docker run -d --name redis -p 6379:6379 redis:7-alpine
docker exec -it redis redis-cli
ตัวเลือกBenefitCost
รันแบบไม่ 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

Flag ใดที่ใช้รัน Docker container ในโหมด detached (background)?
`-p 6379:6379` ทำหน้าที่อะไร?
คุณดู log ของ Redis container ได้อย่างไร?