Container Count per Host Calculator

Container Count per Host Calculator

Estimate the safe number of containers a Docker, Compose, or homelab host can run from CPU requests, RAM reserve, storage IOPS, network port binds, runtime overhead, headroom, and the selected stack mix.

Stack presetsLoad a common host profile
Host capacity inputsUse sustained, not peak, values
2.0 means two requested vCPU per physical core.
Docker Compose CPU request or planning equivalent.
Use 0 for internal-only services behind a proxy.
The mix applies CPU, RAM, IOPS, and port multipliers.
Reserved after overhead for updates, bursts, and new services.
Safe container count0Limiting resource
CPU-limited count0requested cores
RAM-limited count0usable GB
IOPS / port cap0storage vs network
Capacity gridUpdates after each calculation
0
Usable requested CPU

After OS reserve, overhead, and headroom.

0 GB
Usable container RAM

Host RAM minus reserve and stack cache.

0
Usable storage IOPS

Sustained IOPS after reserve and stack load.

0
Usable host ports

Available published ports after reserve.

Reference tablesCompare request patterns and common hosts

Container request starting points

Service typeCPU requestRAM requestIOPS / ports
DNS, MQTT, small webhook0.05 to 0.15 core64 to 256 MB1 to 2 IOPS, 0 to 1 port
Home Assistant, Node-RED0.20 to 0.50 core512 MB to 1.5 GB3 to 8 IOPS, 1 to 3 ports
Media helper or indexer0.15 to 0.40 core256 MB to 1 GB4 to 12 IOPS, 0 to 2 ports
Database, search, logging0.50 to 1.50 core1 to 4 GB20 to 150 IOPS, 1 to 3 ports
NVR and detection service1 to 3 cores2 to 8 GB50 to 300 IOPS, 2 to 5 ports

Host planning examples

Host profilePractical reserveOften limitingPlanning note
2-core mini PC, 8 GB RAM1 core, 2 GB RAMRAM or portsGood for small home automation stacks.
4-core mini PC, 16 GB RAM1 core, 3 GB RAMCPU burstsWorks well with light oversubscription.
8-core home server, 32 GB RAM1 to 2 cores, 6 GB RAMIOPSNVMe helps many Compose stacks stay responsive.
12-core lab host, 64 GB RAM2 cores, 8 GB RAMPort bindsReverse proxy keeps exposed ports under control.
Camera or logging host2 cores, 8 GB RAMDisk IOPSSize storage for sustained random writes.

Compose stack mix multipliers

Stack mixCPU factorRAM factorIOPS / port factor

Common scenarios from presets

PresetHostStack styleExpected limiter
Tiny Mini PC2 cores, 8 GBLight automationRAM
Media Compose6 cores, 32 GBMedia helpersIOPS
Dev Lab Host8 cores, 48 GBDatabases and queuesCPU or IOPS
Power Host16 cores, 128 GBMixed servicesPorts
Camera Services8 cores, 64 GBNVR eventsStorage IOPS
Capacity tipsUse these with the result
CPU request tip: For mostly idle home services, requested CPU can be oversubscribed, but the calculator still reserves headroom so updates and backups do not flatten the host.
RAM reserve tip: Memory is usually the least forgiving limit. Keep enough RAM for the OS, filesystem cache, database buffers, and compose stack sidecars.
Storage IOPS tip: Logging, databases, NVR, and download clients can hit disk wait before CPU looks busy. Use sustained IOPS, not only advertised peak numbers.
Network port tip: Many containers can share one reverse proxy. If every service publishes multiple host ports, the network count can become the first hard cap.

When you turn on your new server and see it booting up containers, it makes you feel accomplished. It’s running a resolver, now Home Assistant, now a Plex helper, now a logging stack. Everything feels under control until you add another service. Your machine grinds to a halt. Your host goes unresponsive, the disk light remains solid, and your UI lags.

Welcome to the world of homelab. Sure, you didn’t fry your hardware, but you’ve used up the resources required to stabilize your virtual environments. You can easily count CPU cores and RAM sticks, and most folks plan their host based off them. Containers don’t care about the specs on the box; they care about what’s available in the moment. Once you plug in your sustained performance numbers into the calculator it does the math for you, no more guessing who’s going to fall over first. It helps you think beyond raw hardware spec and look at actual runtime environment.

How to Plan Your Server Resources

Most people go wrong with the storage layer. That shiny new SSD has five thousand IOPS? You’re not going to get that if you’re running database commits and backups overnight. Instead, you’ll be getting an average over time once wear leveling and cache flushing take effect. And even if all you’ve got are two dozen container spitting out log messages, they’ll start fighting for disk access long before the CPU hits its limit. To account for this, the tool lets you specify a reserve percentage, which isn’t wasted capacity; rather, it’s protection from those times when queuing up requests starts to slow the interface down.

The other big issue is memory. Got a 32-gigabyte instance? Think you can allocate all of it? Nope! There’s filesystem overhead. There’s OS overhead from page caching. If you don’t leave yourself some cushion, the kernel will begin to kill things in order to save its own ass. That’s not a bug; that’s Linux being Linux when it’s under the gun. As the memory usage table (reference) illustrates, your small, simple webhooks app will get by with just a few hundred megabytes; your large database stack will consume many gigs. Know what you’re running and why.

The last bottleneck: Network Ports (Which nobody talks about) Have lots of terabytes of disk? There are cores all over the place. Fine. But what happens when you want to put 10 different services right on the host? Well guess what… port collisions is merciless. They happen instantly.

The calculator treats available ports as a hard cap too (like RAM), and reminds you why a reverse proxy isn’t something you can live without (it’s a capacity multiplier). It is a way to free up your scarce network addresses.

That’s when it gets real: oversubscription. If you’re confident that no service will spike at any given time, just slap a couple of virtual CPU cores on each physical one. That’s fine for automation scripts idling away the night, but not for transcoding videos. You get to tweak this parameter in the calculator, but you’ll need to specify a percentage of headroom as well.

This is headroom for the future. This is for the future update that corrupts its config file and leaves behind a zombie process. This is for the backup job that decides to run at the worst possible moment.

Planning for capacity is about minimizing surprise, not maximizing utilization. An eighty percent full host are a broken host. You need to know you can add another service without poring over all the metrics dashboards. And those numbers on the tool aren’t limits, they’re guardrails. They are guardrails to prevent you from hitting the limits of resource contention. Estimate conservativeley. Add headroom. Verify the performance (IOPS). Add headroom if needed. Repeat until you like the number. Reduce services rather than reserves; a slower but available host is preferable to a fast host that goes down. This isn’t a lab you are building to generate new problems, it’s one you’re using to resolve existing ones. You should of made the headroom obvious and the host will pay you back in uptime.

Container Count per Host Calculator

Leave a Comment