A Docker VPS is a virtual private server you control fully, so you can install Docker Engine and run containers or a docker-compose.yml stack. The best Docker hosting providers in 2026 fall into three groups: raw VPS (Hetzner from €5.99), container platforms (Render, Fly.io, Railway) and managed VPS (xCloud Cloud VPS for Docker from $24.99).
Almost every provider can start a container. What separates them is what happens around it: who opens the right port, who issues the certificate, where your volume data lives, and who notices when a container stops at 3 a.m.
If containers are new to you, start with what Docker is and how its parts fit together, then come back. This guide covers the Docker VPS basics, the install, the port mistake most guides skip, and seven providers ranked with prices checked on 31 October 2026.
TL;DR: Best Docker VPS and Docker Hosting Providers by Goal
| If you want to… | Use this | From | Setup |
|---|---|---|---|
| Run a Compose app with HTTPS and backups handled | xCloud | $24.99/mo (Cloud VPS 6 GB) | Minutes |
| Try a container for free | Render | Free (750 hours, sleeps when idle) | Minutes |
| Pay per running machine, in many regions | Fly.io | Usage-based, per machine | Minutes |
| Deploy from a template catalog with usage billing | Railway | $5/mo Hobby | Minutes |
| A well-documented raw VPS | DigitalOcean | $24/mo for 4 GB | An evening |
| The lowest server bill | Hetzner Cloud | €5.99/mo (4 GB) | An evening |
| A free control panel on your own servers | Coolify | Free, Cloud $5/mo | An hour |
Best Docker VPS for Compose apps: xCloud, because Docker is installed on the first deploy and Nginx, free SSL and scheduled volume backups come with it.
Best free starting point: Render’s free instances, as long as you can live with the service sleeping after 15 minutes without traffic.
Cheapest if you run your own stack: a Hetzner CX33 (4 vCPU, 8 GB) at €8.99 a month as of October 2026, when Hetzner has stock, or a DigitalOcean Droplet, with Coolify on top if you want a dashboard.
The Docker VPS Mistake Most Guides Skip: Published Ports Skip Your Firewall
Here is the one thing most “install Docker on a VPS” guides leave out. When you run docker run -p 8080:80, Docker publishes that port on every address of the server, and the traffic is routed before ufw rules apply.
Docker’s port publishing documentation says plainly that publishing container ports “is insecure by default”, and its packet filtering and firewalls page explains that this traffic is diverted before it reaches your ufw rules. So a database admin panel you meant to keep private can be open on SERVER_IP:8080 even with ufw switched on.

The fix is two small habits:
- Publish internal ports to localhost only:
127.0.0.1:8080:80instead of8080:80. Then only the server itself can reach the container. - Put a reverse proxy in front. Nginx, Caddy or Traefik listens on 80 and 443, handles HTTPS for your domain and forwards to
127.0.0.1:8080.
This is how xCloud wires Docker apps too. Nginx is the public entry point, and when you deploy a Git repository that only has a Dockerfile, xCloud writes the Compose file for you, so the app is only reachable through your domain, not by server IP and port, and it starts again by itself if it stops. Your own docker-compose.yml runs exactly as written, so the same two habits apply to it.
What Is a Docker VPS?
A Docker VPS is an ordinary virtual server with Docker Engine installed. You get root access, a fixed slice of CPU, RAM and NVMe disk, and a public IP. That control is the point: Docker needs access at the operating system level, which is why shared hosting cannot run it.
Some providers sell a “Docker VPS” that is simply a VPS with Docker preinstalled. Hostinger offers an Ubuntu 24.04 template with Docker, and OVHcloud’s Docker VPS page says Docker is ready when the server is delivered. On any other VPS, the install takes about five commands (below).
Docker VPS vs container platform vs managed VPS
| Category | What you manage | Typical cost | Suits |
|---|---|---|---|
| Raw Docker VPS | Docker, proxy, HTTPS, firewall, backups, updates | €5.99 (Hetzner) to $48 (DigitalOcean) a month as of October 2026 | People who already run Linux servers |
| Container platform (PaaS) | An account, a service definition, your bill | Free to usage-based | Stateless apps deployed from Git |
| Managed Docker VPS | Your images, Compose file and settings | $24.99 to $84.99 a month for xCloud Cloud VPS plans built for Docker | Teams running Compose apps with a database |
Rule of thumb: if your app is a docker-compose.yml with a database and a few services, choose a raw or managed VPS. Container platforms are happiest with stateless services and their own managed databases.

How big should a Docker VPS be?
Docker itself is light. ScalaHosting’s install guide lists 512 MB as the minimum and at least 2 GB as the recommendation, and that matches what a single small container needs.
Size for what runs inside, not for Docker:
| Workload | Starting size | Example plans (checked 31 Oct 2026) |
|---|---|---|
| One small container, no database | 1 to 2 GB RAM | A small shared-CPU machine on Fly.io |
| A Compose app with a database | 4 GB RAM, 2 vCPU | Hetzner CX23 (€5.99), DigitalOcean 4 GB ($24) |
| Several apps, or builds on the server | 8 GB RAM, 4 vCPU or more | Hetzner CX33 (€8.99), xCloud Cloud VPS 16 GB ($59.99) |
Treat this as a starting point rather than a strict rule. Watch memory for a week after launch, and resize before the server starts swapping during image builds.
How to Install Docker on a VPS (Ubuntu)
If you choose a raw Docker VPS, this is the install from Docker’s official Ubuntu guide. It supports Ubuntu 22.04, 24.04 and 26.04 LTS, plus the current interim release.
Step 1: Add Docker’s repository
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Step 2: Install Docker Engine and the Compose plugin
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt install docker does not install Docker Engine. Use the repository above.
Step 3: Check that it works
sudo docker run hello-world
Docker also offers a one-line convenience script at get.docker.com, but its own docs say it is not recommended for production servers.
Step 4: Run your app the safe way
A minimal docker-compose.yml for a web app with a database looks like this. Note the localhost-only port, the named volume and the restart policy:
services:
app:
image: ghcr.io/your-org/your-app:latest
ports:
- "127.0.0.1:8080:3000"
environment:
DATABASE_URL: postgres://app:change-me@db:5432/app
depends_on: [db]
restart: unless-stopped
db:
image: postgres:17
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: change-me
volumes:
- db-data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
db-data:
Start it with docker compose up -d, then point Nginx or Caddy at 127.0.0.1:8080 and issue a certificate for your domain. The Docker Compose guide explains each part of the file.
Why can’t I reach my container on the VPS IP?
This is one of the most common Docker VPS questions. In the Docker forum thread, the container worked on localhost:8080 but not on the server’s public IP; the fix was opening the port in the provider’s firewall.
Check in this order: the container is running (docker ps), the port is published, the app listens on 0.0.0.0 inside the container, and the provider’s cloud firewall allows the port. For anything public, reach it through your domain and the proxy instead of an open port.
What the Best Docker Hosting Providers Get Right
Four things separate a good Docker host from one that bites you later.
Volumes that persist. Docker’s docs say a volume’s contents “exist outside the lifecycle of a given container”. Anything not on a volume disappears when the container is recreated, so database directories must always be volumes.
Docker Compose support, not only single containers. Real apps are a web service, a database and often a cache. A platform that wants one service per deployment turns a 30-line Compose file into rework.
A proxy and HTTPS in front. Containers should not face the internet directly. You want HTTPS on your domain, with certificates that renew themselves.
A restart policy and someone watching. Docker’s default restart policy is no, so a crashed container stays down. Set unless-stopped or on-failure, as Docker’s restart policy page explains, and use uptime monitoring.
How We Ranked These Docker Hosting Providers
Each provider was scored on six questions, weighted toward what breaks in production:
- Does it run Docker Compose directly?
- How does persistent storage work, and is it on the free tier?
- Is HTTPS automatic on a custom domain?
- What is the real monthly cost, including storage and bandwidth?
- Who handles ports, the firewall and restarts?
- Who owns operating system updates?
All prices were read from each provider’s own pricing page or docs on 31 October 2026. Prices change, especially on usage-billed platforms, so check before you commit.
Master Comparison Table
| Rank | Provider | Category | From | Compose | Persistent storage | Setup |
|---|---|---|---|---|---|---|
| 🥇 1 | xCloud | Managed VPS | $24.99/mo (Cloud VPS 6 GB) | ✅ URL, paste or Git | ✅ On the server, scheduled backups | Minutes |
| 🥈 2 | Render | PaaS | Free, then paid instances | ⚠️ Blueprint, not Compose | ⚠️ Paid services only | Minutes |
| 🥉 3 | Fly.io | PaaS | Usage-based | ⚠️ Machine model | ✅ Volumes, billed per GB | Minutes |
| 4 | Railway | PaaS | $5/mo Hobby | ⚠️ Service per container | ✅ Volumes, billed per GB | Minutes |
| 5 | DigitalOcean | Raw VPS | $24/mo for 4 GB | ✅ You install it | ✅ Local disk | An evening |
| 6 | Hetzner Cloud | Raw VPS | €5.99/mo | ✅ You install it | ✅ Local disk | An evening |
| 7 | Coolify | Control panel | Free, Cloud $5/mo | ✅ Yes | ⚠️ You configure | An hour |
The 7 Best Docker Hosting Providers
🥇 1. xCloud, Best Managed Docker VPS for Compose Apps
xCloud Docker hosting runs your containers on a Cloud VPS that xCloud sets up for you, with automatic security updates you can turn on. Docker runs on any xCloud NGINX server, and xCloud installs it the first time you deploy a container app.
You deploy a docker-compose.yml from a public URL, by pasting the YAML, or from a Git repository. If your file publishes more than one port, xCloud asks which one your domain should use.
Key features
- Three ways to deploy: Compose file by URL, pasted YAML, or a Git repository, including Dockerfile-only repos
- Nginx in front with free SSL, so your app answers on your domain, not on an open port
- Docker app backups of your app’s data folders, its Compose file and its
.envsettings, every 12 hours, daily, weekly or monthly - Up to two remote backup copies on S3-compatible or SFTP storage, each with its own schedule and retention
- Restore a backup in place from Backup → Previous Backups (row Action menu → Restore)
- Docker apps next to WordPress, PHP, Laravel and Node.js sites on the same server
- Environment variables editable from the dashboard
Pricing (managed Cloud VPS)
| Plan | Price | Specs |
|---|---|---|
| Cloud VPS 6 GB | $24.99/month | 6 GB RAM, 4 vCPU, 100 GB NVMe SSD, 30 TB bandwidth |
| Cloud VPS 16 GB | $59.99/month | 16 GB RAM, 6 vCPU, 200 GB NVMe SSD, 30 TB bandwidth |
| Cloud VPS 24 GB | $84.99/month | 24 GB RAM, 8 vCPU, 300 GB NVMe SSD, 30 TB bandwidth |
These are the Cloud VPS plans on the Docker hosting page, sized for a Compose app with a database. They include 30 TB of bandwidth. xCloud Managed Servers are a separate line: they start at $5 a month on the pricing page and include up to 10 TB of bandwidth, depending on the plan. Docker runs on any of them with NGINX, but 1 or 2 GB fills up fast once a database and an image build share it.
Already rent servers? With self-managed plans you connect your own VPS: free for one server and 10 sites, then $5 per server a month at 2 to 5 servers, $4 at 6 to 10 and $3 at 11 or more. See supported server providers.
| ✅ Pros | ❌ Cons |
|---|---|
| ✅ Compose files run as written, from URL, paste or Git | ❌ Higher monthly price than a €5.99 Hetzner box |
| ✅ Docker installed for you on the first deploy | ❌ Docker runs on NGINX servers only, not OpenLiteSpeed |
| ✅ Scheduled volume backups with remote copies | ❌ Restart policy in your own Compose file is still yours to set |
| ✅ 30 TB bandwidth on Cloud VPS plans for Docker; up to 10 TB on Managed Servers | ❌ Each app runs on one server you choose |
Best for: Teams running real Compose apps who want the proxy, HTTPS and backups handled.
👉 The custom Docker deployment guide walks through the dashboard flow step by step.
🥈 2. Render, Best Free Way to Try a Container
Render’s free instances are the easiest no-cost start on this list. Each workspace gets 750 free instance hours a month, and a free web service sleeps after 15 minutes without traffic.
The catch for Docker apps: free services cannot attach persistent disks, and their filesystem is lost on redeploy or restart. Persistent disks need a paid service, so plan for a paid instance as soon as you store data.
Render also uses its own Blueprint format instead of running docker-compose.yml directly, so a multi-service app needs translating.
Best for: Prototypes and stateless services you deploy from Git.
🥉 3. Fly.io, Best for Pay-Per-Machine Global Deployment
Fly.io bills per machine, by the second while it runs, so a small machine costs little. Volumes and dedicated IP addresses are billed separately; check Fly.io’s pricing page for current rates.
Best for: Apps that need to run close to users in several regions without a server per region.
4. Railway, Best Template Catalog
Railway is a quick route from a template to a running service. Plans are Hobby at $5 a month with $5 of usage included and Pro at $20 with $20 included; usage above that is billed.
Volumes are billed per GB, with size limits by plan. Each service runs as its own container.
Best for: Trying an app quickly, or deploying something the template catalog already covers.
5. DigitalOcean, Best Documented Raw Docker VPS
DigitalOcean costs more than the cheapest VPS options and pays some of it back in documentation and a control panel most developers know.
| Basic Droplet | Specs | Price |
|---|---|---|
| 4 GiB / 2 vCPU | 80 GiB SSD, 4,000 GiB transfer | $24/month |
| 8 GiB / 4 vCPU | 160 GiB SSD, 5,000 GiB transfer | $48/month |
Backups are a paid add-on. You install Docker, the proxy, certificates and backups yourself, using the steps above.
Best for: Teams already on DigitalOcean who value familiarity over unit cost.
6. Hetzner Cloud, Cheapest Credible Docker VPS
Hetzner has earned its reputation. Its cost-optimized plans include at least 20 TB of traffic in the EU, and prices exclude VAT:
| Plan | vCPU / RAM | Disk | Price |
|---|---|---|---|
| CX23 | 2 / 4 GB | 40 GB NVMe | €5.99/month |
| CX33 | 4 / 8 GB | 80 GB NVMe | €8.99/month |
| CX43 | 8 / 16 GB | 160 GB NVMe | €16.49/month |
| CX53 | 16 / 32 GB | 320 GB NVMe | €29.99/month |
When we checked on 31 October 2026, Hetzner listed its cost-optimized plans as currently not available, so check that you can order one before you plan around it. You get a server and nothing else, which is either the appeal or the problem.
Best for: Experienced operators chasing the lowest bill.
7. Coolify, Best Free Control Panel
Coolify is not a host. It is an open source panel that runs on servers you already rent and gives them a deployment dashboard.
Self-hosted Coolify is free forever. As of October 2026, Coolify Cloud is $5 a month for two connected servers, plus $3 for each extra server. Cloud runs the panel for you, but your apps still run on your own VPS, which you patch and back up.
The common pattern is Coolify plus a cheap Hetzner box. Our xCloud vs Coolify comparison covers where each one fits.
Best for: Developers running several apps who want one dashboard and do not mind maintaining it.
Two more Docker-ready VPS options
Both rank for “docker vps” because they ship Docker on the server image:
- Hostinger: an Ubuntu 24.04 template with Docker and a Docker Manager.
- OVHcloud: Docker preinstalled on its VPS range. Check its regional VPS page for current prices.
Both are still raw servers: the proxy, HTTPS, firewall and backups of your volumes stay with you.
What a Docker VPS Actually Costs
The cheapest row on paper is rarely cheapest once everything is counted. Here is a realistic month for one Compose app with a database:
| Cost line | Managed VPS | Container PaaS | Raw VPS |
|---|---|---|---|
| Compute | $24.99 to $84.99 (xCloud Cloud VPS) | Free to usage-based | €5.99 (Hetzner) to $48 (DigitalOcean), as of October 2026 |
| Persistent storage | Included in the plan | Billed per GB on Fly.io and Railway | Included |
| Bandwidth | 30 TB on Cloud VPS plans for Docker, up to 10 TB on Managed Servers | Metered or capped by plan | Usually 4 to 20 TB included |
| HTTPS | Free, automatic | Included | Free via Let’s Encrypt, you set it up |
| Backups | Scheduled backups on the server; remote copies to your own S3 or SFTP storage | Varies | A paid add-on on DigitalOcean; or your own script |
| Your time | Low | Low | An evening to set up, then regular upkeep |
Your time is the line item people forget. A raw Docker VPS is cheaper until the night a certificate fails to renew or a disk fills with old images.
5 Mistakes When Choosing a Docker VPS
Mistake 1: Assuming container storage persists. It does not. Anything outside a volume disappears when the container is recreated, and edits made inside a running container are lost on the next deploy.
Mistake 2: Publishing ports to the whole internet. -p 8080:80 opens the port on every address and skips ufw. Bind to 127.0.0.1 and use a proxy, as shown above.
Mistake 3: Comparing compute prices only. Storage, dedicated IPs, backups and bandwidth are separate lines on several platforms. Build the whole bill first.
Mistake 4: Picking a platform that cannot run your Compose file. If your app is five services in one YAML file, a one-service-per-unit platform means rework.
Mistake 5: Leaving the restart policy at the default. The default is no. Without unless-stopped or on-failure and some monitoring, an outage lasts until someone notices. Our VPS security guide covers the rest of the server checklist.
What xCloud Does Not Do (Honest Limits)
xCloud is the managed path, not the right answer for everyone. Know these limits before you pick it:
- Docker needs an NGINX server. OpenLiteSpeed servers cannot run Docker apps on xCloud. See how Docker works on xCloud servers.
- Your Compose file runs exactly as written. xCloud does not rewrite its
ports:, so your domain must point to a port the file publishes. xCloud checks this when it can read the file; if the domain points to a port nothing listens on, the site answers with a 502 error. - Restart policies in your own Compose file are yours. xCloud sets the app to restart on its own only for the Compose file it writes for Dockerfile-only Git repositories.
- Containers share the server. Docker apps and WordPress sites on one server use the same CPU, RAM and disk, so size the server for everything on it.
- One server per app. Each app runs on the server you choose, so plan that server’s size for the whole stack.
To undo a deploy, restore an earlier backup from Backup → Previous Backups (see backup and restore for Docker apps), or delete the site. Your server and other sites stay as they are.
Pick Your Docker VPS and Deploy This Week
Choosing a Docker VPS comes down to one honest question: do you want to own the proxy, the certificates, the firewall, the backups and the restart policy?
If yes, a Hetzner server or a DigitalOcean Droplet with the install above is the cheapest route, at the cost of an evening plus regular upkeep. If no, a managed plan takes those jobs off your list. It is the same managed vs self-managed trade-off every team meets eventually.
Whichever you choose, three habits stay yours: put data on volumes, bind internal ports to 127.0.0.1 behind a proxy, and test a restore before you need one. For the wider hosting picture, our VPS providers comparison looks at performance and support.
Want Compose, HTTPS and volume backups set up for you? Deploy your Docker app on xCloud in minutes.
If you have found this blog helpful, feel free to subscribe to our blogs for valuable tutorials, guides, knowledge, and tips on web hosting and server management. You can also join our Facebook community to share insights and engage in discussions.
Frequently Asked Questions
What is a Docker VPS?
A Docker VPS is a virtual private server where you can install Docker Engine and run containers yourself. You get root access, a fixed amount of CPU, RAM and disk, and a public IP address. Some providers ship it with Docker preinstalled; on others you install it in a few commands.
How much RAM does a Docker VPS need?
Docker itself is light. ScalaHosting’s install guide gives 512 MB as the minimum and recommends at least 2 GB. The real number depends on your containers: add up what each service and its database use, then leave headroom so the server does not run out of memory during an image build.
Why can’t I reach my Docker container on my VPS IP address?
Usually a firewall in front of the server, not Docker. Check that the container publishes the port (for example -p 8080:80), then open that port in your provider’s cloud firewall. For a public site, a better fix is a reverse proxy on ports 80 and 443 that forwards to the container.
Do published Docker ports bypass ufw?
Yes. Docker’s packet filtering and firewalls documentation says traffic to a published container port is diverted before it goes through ufw rules. Publish internal ports to 127.0.0.1 and put Nginx, Caddy or Traefik in front, so only your domain is reachable from outside.
Which Docker hosting providers run docker-compose.yml directly?
On any raw VPS you run docker compose up yourself. xCloud deploys a docker-compose.yml from a public URL, pasted YAML or a Git repository. Render, Fly.io and Railway use their own service definitions, so a Compose file usually needs translating.
Is managed Docker hosting worth it over a cheap VPS?
It depends on whether your time is a cost. A Hetzner CX33 at €8.99 a month is cheaper than a $24.99 managed plan, but you then own the proxy, certificates, firewall and backups yourself. If one bad night a month costs you more than the difference, managed is the cheaper option.
Last updated October 31, 2026
← All articles