SECURITY WARNING: Never run commands you don't understand. Always review code before execution. Use at your own risk.
Docker New Added 8 September 2026

Docker: could not find an available, non-overlapping IPv4 address pool

Docker ran out of private subnets to hand to a new bridge network. Either dozens of stale Compose networks are still defined, or the default 172.16/12 pools collide with a corporate VPN route, so Docker refuses to create a network it knows would break routing.

Quick fix

Read the commands before running them. Anything that restarts a service, deletes data or changes permissions should be tried on a non-production system first.

Quick fix
docker network ls
docker network prune -f          # removes unused networks

# Still failing: the default pools clash with the VPN
sudo tee /etc/docker/daemon.json <<'EOF'
{
  "default-address-pools": [
    { "base": "10.200.0.0/16", "size": 24 }
  ]
}
EOF
sudo systemctl restart docker

# Pin one Compose project rather than the whole daemon
networks:
  default:
    ipam:
      config: [{ subnet: 10.201.0.0/24 }]

How to diagnose Docker errors

Docker errors are usually about the daemon (not running, or not reachable by your user), the host (disk full, port already bound), or the image (wrong architecture, rate-limited pull, missing credentials). Apple Silicon and ARM cloud instances made architecture mismatches far more common. exec format error is the signature, and it means an amd64 binary is being run on arm64 or vice versa.

If the quick fix above does not resolve it, work through these steps. They apply to this whole class of error, not just to this one message, which is usually what saves the time.

  1. Check the daemon before anything else: docker info. A "cannot connect to the Docker daemon" error is a socket permission or service problem, never an image problem.
  2. Reclaim space deliberately with docker system df to see where it went, then docker system prune. Build cache and dangling volumes are usually the bulk of it.
  3. For exec format error, run docker image inspect --format '{{.Architecture}}' image:tag and compare with uname -m. Build multi-arch images with docker buildx build --platform linux/amd64,linux/arm64.
  4. Find what is holding a port with ss -tulpn | grep :PORT (or lsof -i :PORT) rather than restarting Docker and hoping.
  5. Read build failures from the first error, not the last. BuildKit prints failing steps out of order, and the final line is often a downstream consequence.

Tools worth reaching for

  • docker info
  • docker system df
  • docker buildx
  • ss -tulpn
  • docker logs --tail 100

Authoritative references

Primary documentation for this error, worth reading before applying any fix in production.

docs.docker.com

Related Docker errors

See all 27 Docker errors →

Browse other categories

Something missing or wrong?

This entry is maintained by hand. If the fix is out of date, incomplete, or you have a better one, email a correction and it will be reviewed.