12/04/2026 18:18น.

แก้ปัญหา 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 ต่อโปรเจกต์
- เปิดไฟล์ config ของ Docker Daemon:
sudo nano /etc/docker/daemon.json
- เพิ่มหรือแก้ไขค่าต่อไปนี้:
{
"default-address-pools": [
{
"base": "192.168.250.0/16",
"size": 28
},
{
"base": "10.100.0.0/16",
"size": 28
}
]
}
- บันทึกไฟล์ (กด 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 โปรเจกต์!
🚀 ถ้าคุณเจอปัญหานี้ ลองทำตามวิธีแก้นี้ดู!
💡 มีแนวทางหรือวิธีอื่นๆ ที่น่าสนใจ? คอมเมนต์ไว้ได้เลย!