การดู : 0

12/04/2026 18:18น.

แก้ปัญหา Docker Network: เมื่อ IP Pool เต็มและสร้าง Network ใหม่ไม่ได้!

แก้ปัญหา Docker Network: เมื่อ IP Pool เต็มและสร้าง Network ใหม่ไม่ได้!

🚀 แก้ปัญหา Docker Network: เมื่อ IP Pool เต็มและสร้าง Network ใหม่ไม่ได้!

🔥 ปัญหาที่พบ

ระหว่างที่กำลัง Deploy โปรเจกต์ด้วย Docker Compose อยู่ดีๆ ก็เจอ Error นี้:

Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network

ตอนแรกก็งงว่ามันเกิดอะไรขึ้น แต่พอลองตรวจสอบดูถึงรู้ว่า Docker ใช้ IP เปลืองมากเกินไป! ทำให้ IP Pool เต็มเร็วกว่าที่ควรจะเป็น


💡 ทำไมถึงเกิดปัญหานี้?

โดยปกติแล้ว Docker จะสร้าง Network ใหม่ให้กับแต่ละโปรเจกต์ และกำหนด 256 IPs (Subnet /24) ต่อ Network แม้ว่าแต่ละโปรเจกต์อาจใช้แค่ 4-5 IP เท่านั้น! นั่นหมายความว่า Docker จอง IP โดยเปล่าประโยชน์มหาศาล จน Pool เต็มเร็วมาก

ยิ่งมีโปรเจกต์เยอะขึ้น IP ก็หมดเร็วขึ้น และพอเต็มแล้ว Docker ก็จะสร้าง Network ใหม่ไม่ได้อีกเลย!


✅ วิธีแก้ไข (Step-by-Step)

🔍 1. ตรวจสอบ IP Pool ที่ถูกใช้ไปแล้ว

ใช้คำสั่งนี้เพื่อตรวจสอบว่าตอนนี้มี Subnet อะไรบ้างที่ Docker ใช้งานอยู่:

docker network inspect $(docker network ls -q) | grep Subnet

ถ้าเห็นว่ามีหลายรายการที่ใช้ Subnet /24 แสดงว่า Docker กำลังใช้ IP Pool เปลืองเกินไปจริงๆ


🌟 2. ปรับขนาด Subnet ให้เล็กลง

แทนที่ Docker จะให้ 256 IPs ต่อ Network (/24) เราจะลดขนาดลงเหลือ 16 IPs ต่อ Network (/28) ซึ่งเพียงพอสำหรับ 4-5 Services ต่อโปรเจกต์

  1. เปิดไฟล์ config ของ Docker Daemon:
sudo nano /etc/docker/daemon.json
  1. เพิ่มหรือแก้ไขค่าต่อไปนี้:
{
  "default-address-pools": [
    {
      "base": "192.168.250.0/16",
      "size": 28
    },
    {
      "base": "10.100.0.0/16",
      "size": 28
    }
  ]
}
  1. บันทึกไฟล์ (กด Ctrl + X → Y → Enter)

♻️ 3. รีสตาร์ท Docker และทดสอบ

หลังจากตั้งค่าเสร็จแล้ว ให้รีสตาร์ท Docker:

sudo systemctl restart docker

จากนั้นลองสร้าง Network ใหม่:

docker network create test_network

หากไม่มี Error แสดงว่าแก้ไขสำเร็จแล้ว! 🎉🎉


💪 ผลลัพธ์ที่ได้

🏠 จากเดิมที่ Docker รองรับได้แค่ 512 โปรเจกต์ ตอนนี้สามารถรองรับได้สูงสุดถึง 8,192 โปรเจกต์!

💰 การลดการใช้ IP โดยไม่จำเป็นทำให้ Docker จัดการ Network ได้มีประสิทธิภาพขึ้นมาก

🚀 Deploy โปรเจกต์ใหม่ได้แบบไร้กังวล ไม่ต้องกลัวว่า IP Pool จะเต็มเร็วเหมือนเดิมอีกแล้ว


🎯 สรุปสั้นๆ

  • Docker ใช้ IP เปลือง เพราะกำหนด 256 IPs ต่อเครือข่าย (Subnet /24)
  • แต่ละโปรเจกต์ใช้จริงแค่ 4-5 IPs ทำให้เกิดการใช้ IP โดยไม่จำเป็น
  • แนวทางแก้ไข: ลดขนาด Subnet จาก /24 → /28 ให้เหมาะสมกับการใช้งานจริง
  • จากเดิมรองรับได้แค่ 512 โปรเจกต์ → ปรับแล้วรองรับได้สูงสุด 8,192 โปรเจกต์!

🚀 ถ้าคุณเจอปัญหานี้ ลองทำตามวิธีแก้นี้ดู!

💡 มีแนวทางหรือวิธีอื่นๆ ที่น่าสนใจ? คอมเมนต์ไว้ได้เลย!