Docker Daemon Address Pool Planner
WebEverything runs locally in your browser — nothing is uploaded
Plan how Docker hands out addresses: how large each custom network subnet is, how many to create, and which pool they are cut from. The output is a snippet you can paste straight into /etc/docker/daemon.json plus a per-network subnet list, each entry showing its usable addresses, how many containers fit, and the first and last usable address. ⚠️ Not sure how large the subnet should be? Set Subnet size to Auto and give the number of containers per network; the tool picks the smallest subnet that still fits. ⚠️ Every subnet has to give up its network and broadcast addresses, and a Docker bridge takes one more as its gateway, so a /24 holds 253 containers rather than 256 — Auto already accounts for all three. ⚠️ The more important half is the conflict check — Docker already occupies several ranges (docker0 defaults to 172.17.0.0/16, the default pool covers 172.16.0.0/12, and bridge networks start at 172.18.0.0/16), and a pool that lands inside them fights the out-of-the-box setup. Every range is compared, including the subnets against each other. When it cannot fit (a subnet larger than the pool, or more networks than the pool yields) the error states how wide the prefix must be and which network fails. Need compose ↔ docker run conversion instead? That is a separate tool (“Compose ↔ docker run”). Everything runs in your browser; the generated config is never uploaded.
Features
- Generates a snippet ready to paste into /etc/docker/daemon.json
- Subnet size can be Auto: pick the smallest prefix that fits the containers per network (network, broadcast and bridge gateway already deducted)
- Lists which subnet each network gets, in order from the pool, with usable addresses, container capacity and first/last usable address
- Checks overlap with docker0, the default pool and the bridge default, and the subnets against each other
- Optionally includes bip (the docker0 bridge address)
- Points out the canonical network address when base carries host bits
- ⚠️ Clear errors when it does not fit: a subnet larger than the pool reports the prefix you need, and too many networks reports which one fails and how wide base must be
- All local, so the config never leaves your browser
How to use
- Pick the subnet size per network (Auto, or /16 through /28)
- With Auto, enter the containers per network; otherwise skip it
- Set how many networks to create and the pool base
- Tick bip if you also want the docker0 bridge setting
- Copy the daemon.json snippet or check the subnet list (use the other tool for compose ↔ docker run conversion)
FAQ
- Not sure how large the subnet should be? Use Auto
- Set Subnet size to Auto and give the containers per network; the tool picks the smallest prefix that fits. ⚠️ The arithmetic is not simply rounding the container count up to a power of two: every subnet gives up its network and broadcast addresses, and a Docker bridge takes one more as its gateway, so the capacity is 2^(32 − prefix) − 3. A /24 holds 253 containers, not 256, so 254 containers needs a /23. ⚠️ The auto prefix never goes past /30 — Docker rejects /31 and /32 as a pool size.
- What is the difference between default-address-pools and bip?
- bip sets the address of the default bridge docker0 itself (172.17.0.1/16 out of the box), while default-address-pools controls where user-defined bridge networks created by docker network create are cut from and how large they are. The two must not overlap, and Docker checks this at startup.
- Why is base /16 with size /28 not an error?
- Because cutting /28 subnets from a /16 pool is perfectly valid (up to 4096 of them); the official example uses base /16 with size /24. The genuinely wrong case is the reverse: a size prefix smaller than base (a subnet larger than the pool), or a network count that exceeds what the pool can yield. This tool errors on those and merely warns about thousands of subnets.
- Why does the default 172.17.0.0/16 report a conflict?
- Because that is exactly the range docker0 occupies out of the box, and it also sits inside Docker default pool 172.16.0.0/12. To avoid it, choose a base inside 10.0.0.0/8, for example 10.201.0.0/16.
Related tools
Compose ↔ docker run
WebConvert both ways between compose services and docker run. Keys without an equivalent are listed with the reason, never silently dropped.
CIDR Calculator
WebTurn 192.168.1.0/24 into a network address, broadcast address, netmask, wildcard mask and usable host range. Runs in your browser.
Random IP Generator
WebGenerate random IP addresses in bulk: IPv4, IPv6 or mixed, with private and reserved ranges excluded in public mode. Up to 100 at a time.
URL Parser
WebParse a URL into scheme, host, port, path, query parameters and fragment, with each parameter shown raw and decoded. Runs entirely in your browser.
User-Agent Parser
WebParse a user agent into browser, version, OS, device type and engine, and see which rules matched. Pattern matching only. Runs entirely in your browser.
HTTP Status Codes
WebLook up an HTTP status code for its meaning, 1xx–5xx class, typical uses and common traps. Runs entirely in your browser.