Start With 2 CPU, 2GB RAM and 20GB NVMe β Then Size for the Real Workload
The Docker-ready Ubuntu 24.04 image requires at least 2 CPU, 2GB RAM and 20GB NVMe storage. That is the minimum needed to provision the image.
A small API, private tool or development stack may run at that size. A production app with a database, workers, queue, search or frequent builds often needs 4GB or 8GB RAM and more CPU. Choose resources for everything running on the server, not just the main application container.
Choose a Docker Server Size That Matches the Stack
Use these configurations as practical starting points, then monitor the live server and resize before performance becomes a problem.
2 CPU / 2GB RAM / 20GB NVMe
Suitable for a lightweight API, development stack, private dashboard or one small application.
- Few containers
- Low-to-moderate traffic
- No heavy builds or processing
2 CPU / 4GB RAM / 40GB+ NVMe
A better fit for an application, database, reverse proxy and background worker on one server.
- Multi-container Compose stack
- Database and cache
- More room for updates and traffic spikes
4 CPU / 8GB RAM / 80GB+ NVMe
Suitable for several production services, more workers, larger databases or regular processing work.
- Higher concurrency
- More demanding jobs
- Several important containers
Do Not Order Below the Docker Image Minimum
The selected Docker-ready image will not provision below 2 CPU, 2GB RAM and 20GB storage.
Keep every checkout option at or above those values. Larger applications may need more resources even though the image itself can provision at the minimum.
Add More CPU When the Containers Spend Time Processing
Container count does not decide CPU size. The work inside those containers does.
Busy APIs
Authentication, report generation, search and data transformation can keep CPU busy longer than simple cached requests.
Queue workers
Imports, exports, emails and scheduled jobs can create sustained processor demand even when website traffic is low.
Database queries
Sorting, joins, indexing and aggregation use CPU, especially when the dataset or connection count grows.
Image and document processing
Resizing images, creating PDFs, compression and media work can produce sharp CPU peaks.
Docker image builds
Dependency installation and compilation can use more CPU than the completed application needs while running.
Several demanding services
The application, database, workers and search service may all compete for CPU at the same time.
Allow RAM for Linux, Docker and Every Running Service
The full server memory is shared by the operating system, Docker and all container processes.
Why 2GB can be enough
- One small application or API
- Few worker processes
- Little or no local database activity
- Low traffic and limited background jobs
Why 4GB is often safer
- Application and database on the same server
- Redis, queue workers or monitoring included
- More concurrent requests
- More headroom for updates and memory spikes
Linux still needs memory for system services, networking and filesystem cache. Leave room above normal container use rather than setting limits equal to the full server RAM.
Choose Enough NVMe Storage for Images, Volumes, Databases and Logs
The application code is only one part of Docker disk usage.
Docker images
Old image versions can remain after deployments and consume space quickly.
Persistent volumes
Uploads, databases and application data continue growing after the container is created.
Logs
Application and container logs can fill a small disk when rotation is not configured.
Build cache
Frequent builds leave temporary files and cached layers unless they are cleaned deliberately.
It can suit a lightweight stack. Choose more storage when the server will keep a database, uploads, several large images, retained logs or backup files.
What Size Fits These Docker Setups?
These examples show why the same number of containers can need very different resources.
Small private dashboard
App, reverse proxy and a lightweight database with low traffic.
Start around 2 CPU / 2GB RAMCustomer-facing web app
Application, PostgreSQL, Redis, reverse proxy and one or more workers.
Start around 2 CPU / 4GB RAMBusy processing stack
Several production services, frequent jobs, larger database and regular builds.
Start around 4 CPU / 8GB RAM or largerChoose VPS for Moderate CPU Demand and VDS for Dedicated CPU
Both options use the Docker-ready Ubuntu 24.04 image. The difference is how processor resources are allocated.
Docker VPS
Best for development, staging, private tools and production applications with moderate or occasional CPU use.
Configure Docker VPS βDocker VDS
Best for important production apps, busy workers and workloads that need dedicated vCPU resources.
Configure Docker VDS βAdd More Resources When the Server Shows These Problems
- CPU stays heavily used during normal traffic
- Containers restart because memory is exhausted
- Swap use becomes regular
- API response times rise when workers run
- Database queries slow as data grows
- Builds or backups affect the live application
- Disk space repeatedly runs close to full
- You disable useful services just to keep the server stable
Use This Docker Server Sizing Checklist
- Keep the order at or above 2 CPU, 2GB RAM and 20GB storage.
- List the application, database, proxy, workers, queue and monitoring services.
- Estimate normal and peak memory use for each major service.
- Decide whether the server will build images or only pull completed images.
- Allow storage for volumes, databases, uploads, logs and old images.
- Leave RAM for Linux and filesystem cache.
- Choose VDS when dedicated CPU matters to production performance.
- Monitor the live stack and resize before customers notice a slowdown.