
Your Pterodactyl panel worked yesterday. Today, creating or starting a server fails with:
could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
This means Docker ran out of IP address space to assign to containers. Every Docker container and network gets its own subnet. Docker's default address pool is limited, and after creating enough containers, it runs dry.
Why This Happens
Docker assigns each container network a /24 subnet from a pool of private IP ranges (typically 172.17.0.0/16 and 172.18.0.0/16). Each /24 subnet supports 254 addresses but wastes an entire subnet even for a single container.
On a Pterodactyl node with many game servers, Docker burns through subnets fast. After about 30-50 container networks, the default pool is empty and Docker cannot allocate more.
Fix 1: Expand the Docker Address Pool
Edit the Docker daemon configuration:
sudo nano /etc/docker/daemon.json
Add or modify the default-address-pools setting:
{
"default-address-pools": [
{
"base": "172.17.0.0/12",
"size": 28
}
]
}
This does two things:
- base: 172.17.0.0/12 expands the available IP range from a /16 (65,536 addresses) to a /12 (1,048,576 addresses)
- size: 28 makes each container network a /28 (16 addresses) instead of /24 (256 addresses). Game servers do not need 256 IPs per container
With these settings, Docker can create thousands of container networks instead of a few dozen.
Restart Docker:
sudo systemctl restart docker
Then restart Wings:
sudo systemctl restart wings
Fix 2: Clean Up Unused Networks
If you do not want to change the pool size, clean up networks that are no longer in use:
docker network prune
This removes all networks not attached to a running container. If you deleted game servers through Pterodactyl but Docker kept the networks, this frees them up.
Check how many networks exist:
docker network ls | wc -l
If the count is above 30-40, pruning likely fixes the immediate problem. But it will recur as you create more servers.
Fix 3: Both (Recommended)
Do both. Prune old networks to fix it now, then expand the pool to prevent it from happening again:
docker network prune -f
sudo nano /etc/docker/daemon.json
Add the expanded pool config from Fix 1.
sudo systemctl restart docker
sudo systemctl restart wings
Verifying the Fix
After applying the changes:
- Create a new server through the Pterodactyl panel
- Start it
- If it starts without the address pool error, the fix worked
Check Docker's network situation:
docker network ls
docker network inspect bridge
Preventing Port Conflicts
A related issue: after restarting Docker, game server ports might conflict with Nginx or other services on the host. If your web panel runs on ports 80/443 and Docker reassigns those ports during restart, the panel becomes unreachable.
Fix: Make sure your Pterodactyl Wings config.yml has specific port ranges defined. The default allocates from the system's available ports, which can overlap.
Also ensure Nginx/Apache bind to specific IPs rather than 0.0.0.0 if Docker is also using port mappings.
The Bigger Picture
This error is a scaling problem. A fresh Pterodactyl installation with 5 game servers will never hit this limit. But a busy node with 50+ servers, especially if servers are frequently created and deleted, will encounter it eventually.
The daemon.json fix with /28 subnets and a /12 base pool scales to thousands of containers. Apply it proactively on any node that will host more than 20 game servers.
Space-Node handles Docker networking and infrastructure management for all hosted servers. If you are running your own panel and hit this error, the daemon.json fix above resolves it permanently. For managed hosting, check our plans here.
