# Docker hosting in 2026: where to run containers > Three small containers cost $13 to $156 a month on Fly.io, Render, Railway, DigitalOcean, Cloud Run and AWS, or about $7 on a Hetzner server in Europe. Published 2026-11-03, by Nick Potts. For agents: [llms.txt](https://ployz.dev/llms.txt) indexes the Ployz docs as Markdown. **TL;DR:** Three small containers (512 MB each, 100 GB of traffic) cost **$13 to $156 a month** on the hosting platforms if they run all month, and about $7 on a Hetzner server in Europe. Platform bills grow with every container you add; a server bill stays flat until the box is full. - **Pick Fly.io if** you run one or two small containers and want them near users in several regions. It's the cheapest platform in every scenario I priced. - **Pick Cloud Run if** your traffic is spiky and your container can scale to zero. - **Pick Render, Railway or DigitalOcean App Platform if** you want Git-push deploys, never want to see a server, and accept paying per container. - **Pick your own server if** you run three or more containers or need real disk space. Five 1 GB containers cost $43 to $317 on platforms and $11 on a Hetzner server. - **Pick Ployz, which I build, if** your coding agent runs that server: Ployz turns it into a platform the agent deploys to, with HTTPS for every service, volumes and a private network between servers, while deleting a service, a volume or a domain waits for you. Docker hosting is any service that takes a container image and keeps it running at a public address. It comes in three shapes: platforms that run your image for you (Fly.io, Render, Railway, DigitalOcean App Platform), cloud container services (Google Cloud Run, AWS Fargate, Lightsail), and a plain server where you run Docker yourself. All three run the same image. What you pay for is everything around it: a certificate, a disk that survives a redeploy, more copies, and someone to restart it when it dies. ## What would your containers cost? Pick how many containers you run, how much RAM each needs, and how much traffic leaves your app each month. Each row prices the containers running 24/7, with RAM rounded up to the nearest size that platform sells. *The interactive calculator is on the web page: https://ployz.dev/blog/docker-hosting* At the defaults, a server with Ployz is about $7 and Fly.io, the cheapest platform, is $13. Fly only gets close with one or two tiny containers. Fly's shared-cpu-1x is a slice of one CPU, while the Hetzner CX23 gives you two vCPUs and 4 GB, so the gap grows as soon as you add RAM or containers. ## How much does Docker hosting cost? For three 512 MB containers and 100 GB of traffic, the developer platforms charge **$13 to $35 a month**. AWS charges $21 to $63, and Cloud Run $156 if the containers never scale to zero. A server is $7 in Europe or $24 for a US Droplet. The calculator's defaults and two bigger steps: | Option | 3 × 512 MB, 100 GB | 5 × 1 GB, 500 GB | 10 × 2 GB, 2 TB | |---|---|---|---| | Fly.io | $13 | $43 | $167 | | DigitalOcean App Platform | $15 | $60 | $250 | | AWS Lightsail containers | $21 | $50 | $400 | | Railway Hobby | $26 | $85 | $320 | | Render | $35 | $199 | $549 | | AWS Fargate + load balancer | $63 | $135 | $386 | | Cloud Run, always on | $156 | $317 | $803 | | DigitalOcean Droplet, Docker by hand (US) | $24 | $48 | $192 | | Hetzner server + Ployz (Europe) | $7 | $11 | $36 | Platform bills grow in a straight line because each container is priced as its own instance. A server bill moves in steps: one box holds everything until you run out of RAM. That's the whole argument for a server, and I went through the fees behind it in [the hidden costs of PaaS](https://ployz.dev/blog/paas-pricing). I've paid the platform way myself: about $600 for my first month on Laravel Cloud, then $500+ a month on Railway. Today one €80 dedicated server runs more than I ever ran on Railway. ## Where can you host a Docker container? Seven places cover most of what people use. All of them run a standard Linux image. ### Fly.io Fly bills by the second for what you provision. A shared-cpu-1x Machine with 256 MB is **$2.19 a month**, and each extra GB of RAM is $6.00 ([fly.io/pricing](https://fly.io/pricing/)), so 512 MB is about $3.69 and 1 GB about $6.69. - **Traffic:** $0.02 per GB out in North America and Europe ([resource pricing](https://docs.fly.io/about/pricing)). - **Volumes:** $0.15 per GB, one per Machine. - **Dedicated IPv4:** $2 a month. - **Images:** `fly deploy --image` runs an image you've already built ([deploy docs](https://docs.fly.io/apps/deploy)). Where it wins: the cheapest platform here, with regions near your users. Where it falls short: the CPU is a slice, and a volume ties a Machine to one server. More in [Fly.io pricing](https://ployz.dev/blog/fly-io-pricing). ### Render Render runs a Dockerfile from your repo or a prebuilt image, in fixed sizes: **$7** for 512 MB and 0.5 CPU, $25 for 2 GB and 1 CPU, $85 for 4 GB and 2 CPU ([pricing](https://render.com/pricing)). - **No 1 GB size,** so a 1 GB container costs $25. - **Bandwidth:** 5 GB on the $0 Hobby workspace, 25 GB on Pro ($25 a month), then $0.15 per GB ([bandwidth docs](https://render.com/docs/outbound-bandwidth)). Where it falls short: the size steps and bandwidth price make it the most expensive developer platform at every size I priced. More in [Render pricing](https://ployz.dev/blog/render-pricing). ### Railway Railway charges for usage: **$10 per GB of RAM** and $20 per vCPU per month, $0.15 per GB of volume and $0.05 per GB of egress. Hobby is $5 a month including $5 of usage; Pro is $20 including $20 ([pricing](https://railway.com/pricing)). The catch for Docker users: "private Docker registry deployments require the Pro plan" ([services docs](https://docs.railway.com/guides/services)). More in [Railway pricing](https://ployz.dev/blog/railway-pricing). ### DigitalOcean App Platform App Platform sells containers by size: **$5** for 512 MiB, $12 for 1 GiB, $25 for 2 GiB and $50 for 4 GiB on shared CPU. Each size includes 50 to 250 GiB of transfer, pooled across your team, then $0.02 per GiB ([App Platform pricing](https://docs.digitalocean.com/products/app-platform/details/pricing/)). - **The $5 and $10 sizes** can't scale to more than one container. - **No volumes:** "App Platform does not support volumes" ([limits](https://docs.digitalocean.com/products/app-platform/details/limits/)). More in [DigitalOcean pricing](https://ployz.dev/blog/digitalocean-pricing). ### Google Cloud Run Cloud Run has two billing modes, in us-central1 ([Cloud Run pricing](https://cloud.google.com/run/pricing)): | Mode | vCPU-second | GiB-second | Requests | Idle | |---|---|---|---|---| | Request-based | $0.000024 | $0.0000025 | $0.40 per million | free | | Instance-based (always on) | $0.000018 | $0.000002 | none | billed | One 1 vCPU instance running all month is about **$47 of CPU** alone. Outbound traffic is $0.12 per GiB to North America after the first free GiB ([network pricing](https://cloud.google.com/vpc/network-pricing)). That's why Cloud Run looks expensive in my table and cheap in Google's examples. Google prices a public API with 10 million requests a month at $13.69 on request-based billing. If your traffic is spiky and your container starts fast, request-based Cloud Run can beat everything here. If it has to stay warm, it's the most expensive option. ### AWS: ECS on Fargate, or Lightsail containers Fargate charges $0.040478 per vCPU-hour and $0.004446 per GB-hour in US East ([Fargate pricing](https://aws.amazon.com/fargate/pricing/)), so a 0.25 vCPU, 512 MB task is **about $9 a month**. The rest is what makes it expensive: - **Application Load Balancer:** $0.0225 an hour, about $16.43 a month, plus $0.008 per LCU-hour ([ELB pricing](https://aws.amazon.com/elasticloadbalancing/pricing/)). - **Public IPv4:** $0.005 an hour each, $3.65 a month ([VPC pricing](https://aws.amazon.com/vpc/pricing/)). - **Data out:** $0.09 per GB after 100 GB free a month across your account ([EC2 pricing](https://aws.amazon.com/ec2/pricing/on-demand/)). I go through Fargate line by line in [AWS Fargate pricing](https://ployz.dev/blog/aws-fargate-pricing). Lightsail containers are the simple AWS option: **$7** for 0.25 vCPU and 512 MB, $10 for 1 GB, $40 for 1 vCPU and 2 GB, with 500 GB of transfer per container service and $0.09 per GB after that ([Lightsail pricing](https://aws.amazon.com/lightsail/pricing/)). You pay whether the service is running or disabled, until you delete it ([Lightsail docs](https://docs.aws.amazon.com/lightsail/latest/userguide/amazon-lightsail-container-services.html)). ### A plain server A server gives you a fixed price for a fixed amount of CPU and RAM, and you run as many containers as fit. | Server | vCPU / RAM | Monthly | Regions | Source | |---|---|---|---|---| | Hetzner CX23 | 2 / 4 GB | $6.49 + about $0.60 IPv4 | Germany, Finland | [Hetzner price list](https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/) | | Hetzner CX33 | 4 / 8 GB | $9.99 + about $0.60 IPv4 | Germany, Finland | [Hetzner price list](https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/) | | Netcup VPS 500 | 2 / 4 GB, 64 GB SSD, traffic included | €8.26 incl. VAT, 12-month term | Europe; Manassas (US) about €1 more | [netcup VPS](https://www.netcup.com/en/server/vps) | | DigitalOcean Basic 4 GB | 2 / 4 GB, 4,000 GiB transfer | $24, then $0.01 per GiB | every region | [Droplet pricing](https://www.digitalocean.com/pricing/droplets), [bandwidth](https://docs.digitalocean.com/platform/billing/bandwidth/) | Hetzner's own US servers cost more than DigitalOcean's since its 2026 price rises; I compared them in Hetzner vs DigitalOcean. Where it wins: a Hetzner CX33 runs eight 512 MB containers or five 1 GB ones for about $11. Where it falls short: - **Setup.** You set up Docker, a reverse proxy and firewall rules yourself. - **One location.** Fly can put copies near users in many regions. - **No scale to zero.** For a project that's idle 23 hours a day, request-based Cloud Run can be cheaper. - **Backups.** Nothing backs up your volumes unless you set it up. ## What changes the bill? ### A private registry You need one only if you build images somewhere other than where they run and the code is private. If a platform builds from your Git repo, you don't need a registry at all. | Registry | Price | Limits worth knowing | Source | |---|---|---|---| | GitHub Container Registry | Free for now | GitHub promises a month's notice before that changes | [GitHub Packages billing](https://docs.github.com/en/billing/concepts/product-billing/github-packages) | | Docker Hub Personal | $0 | 1 private repo; 200 pulls per 6 hours signed in, 100 per IP anonymous | [Docker pricing](https://www.docker.com/pricing/), [pull limits](https://docs.docker.com/docker-hub/usage/pulls/) | | Docker Hub Pro | $9/month billed yearly, $11 monthly | Unlimited private repos and pulls | [Docker pricing](https://www.docker.com/pricing/) | | Amazon ECR | $0.10 per GB-month | 500 MB free for a year for new customers | [ECR pricing](https://aws.amazon.com/ecr/pricing/) | Which registries each platform pulls from matters more than the registry's price: - **Render** deploys private images from Docker Hub, GHCR, GitLab, Google Artifact Registry and ECR. Images must be `linux/amd64` and under 10 GB compressed, and Render doesn't keep a copy ([Render docs](https://render.com/docs/deploying-an-image)). - **Railway** needs the $20 Pro plan for private registries ([Railway docs](https://docs.railway.com/guides/services)). - **DigitalOcean App Platform** pulls from its own registry, Docker Hub and GHCR, but only redeploys on a new tag automatically for its own registry ([App Platform docs](https://docs.digitalocean.com/products/app-platform/how-to/deploy-from-container-images/)). - **Lightsail** takes public images or images you push straight to the container service. - **A server** pulls from anything `docker login` works with, or builds on the box with no registry. The Docker Hub anonymous limit bites people on a server: 100 pulls per 6 hours per IP. Sign in on the server, or use GHCR. ### HTTPS on a custom domain | Option | HTTPS on a custom domain | Source | |---|---|---| | Fly.io | First 10 certificates free, then $0.10/month each; wildcard $1/month | [Fly pricing](https://docs.fly.io/about/pricing) | | Render | Custom domains and TLS on every workspace plan | [Render pricing](https://render.com/pricing) | | Railway | "Free SSL certificates automatically provisioned and renewed" | [Railway docs](https://docs.railway.com/guides/public-networking) | | DigitalOcean App Platform | Issued automatically when you add the domain | [App Platform docs](https://docs.digitalocean.com/products/app-platform/how-to/manage-domains/) | | Cloud Run | Load balancer recommended; built-in domain mapping is "not production-ready" | [Cloud Run docs](https://docs.cloud.google.com/run/docs/mapping-custom-domains) | | AWS Fargate | ACM certificates are free, but need the ~$16/month load balancer | [ACM pricing](https://aws.amazon.com/certificate-manager/pricing/) | | AWS Lightsail | Up to 4 custom domains per service, validated with CNAME records | [Lightsail docs](https://docs.aws.amazon.com/lightsail/latest/userguide/amazon-lightsail-container-services.html) | | Server | Caddy or another reverse proxy with Let's Encrypt, set up by you | | On a server, HTTPS is a one-time setup: point the domain at the server, run Caddy, list your containers. How to set up a VPS covers that part. ### Persistent storage Every platform limits containers with a disk, and DigitalOcean App Platform has none. | Option | Persistent storage | Catch | Source | |---|---|---|---| | Fly.io | Volumes, $0.15/GB-month | One volume per Machine, one server, no automatic replication | [Fly volumes](https://docs.fly.io/volumes/overview) | | Render | Disks, $0.25/GB-month | No multiple instances, and a brief downtime on every deploy | [Render disks](https://render.com/docs/disks) | | Railway | Volumes, $0.15/GB-month | No replicas; 5 GB max on Hobby, 50 GB on Pro; small downtime on redeploy | [Railway volumes](https://docs.railway.com/reference/volumes) | | DigitalOcean App Platform | None | Use Spaces or a managed database | [App Platform limits](https://docs.digitalocean.com/products/app-platform/details/limits/) | | Cloud Run | Cloud Storage buckets mounted as files | "Not a fully POSIX-compliant file system", no file locking | [Cloud Run docs](https://docs.cloud.google.com/run/docs/configuring/services/cloud-storage-volume-mounts) | | Server | The server's own disk | Backups are your job | | The pattern is the same everywhere: a container with a disk can't be in two places, so it restarts on deploy instead of swapping over cleanly. That's what a database on a disk is, on any platform. If you're putting Postgres in a container, I compared the options in Postgres hosting. ### Scaling On platforms, scaling means more copies behind their load balancer. Railway allows 6 replicas per service on Hobby and 42 on Pro ([pricing](https://railway.com/pricing)), Lightsail up to 20 nodes, and Fly, Cloud Run and Fargate add instances. DigitalOcean App Platform only autoscales on dedicated-CPU sizes from $29 a month, and Render lists horizontal autoscaling as a Pro feature. Cloud Run scales to zero and back on its own, which is its main advantage. Most small apps never need more than one copy of each container. I think the common mistake is paying for horizontal scaling before there's traffic that needs it. ## Which should you pick? | If you… | Pick | |---|---| | Run one or two small containers in several regions | Fly.io | | Have spiky traffic and a container that starts fast | Cloud Run, request-based | | Want Git-push deploys and never want to see a server | Render, Railway or DigitalOcean App Platform | | Already live in AWS | Fargate, or Lightsail for a simpler bill | | Run three or more containers, or need real disk space | Your own server | | Want your own server with a platform's workflow | Your own server with Ployz | ## Where Ployz fits The work a server leaves you (HTTPS, deploys, restarts, a network between boxes) is what I built Ployz to do. It's built for coding agents on your own servers: paste `Read ployz.dev/agents.md and deploy this repo to my server.` into Claude Code, Codex or Cursor and the agent sets it up and deploys. Deleting a service, a volume or a domain waits for you, so the agent can work on a live server without wiping it. Ployz runs any Docker image on a server you rent, or builds your app from GitHub with no Dockerfile for Node, Python, Ruby, PHP, Go, Rust, Java and Elixir. ```sh ployz up --server root@your-server ``` That installs Ployz on a Linux server with systemd, builds the current directory and gives it an HTTPS address. - **Images from any registry:** Docker Hub, GHCR or any other, public or private. Give each release its own tag, because Ployz doesn't watch registries. - **No registry needed** when it builds from GitHub, on your server or in your own GitHub Actions. - **HTTPS for every service:** a `ployz.app` address, or your own domain, both included. - **Volumes** with a storage limit on Ubuntu LTS, and one-click Postgres, MySQL, Redis and MongoDB. - **More servers:** add one with a single command. Servers join an encrypted WireGuard network, services reach each other at `NAME.internal`, and a service can run up to 50 replicas. - **Preview environments** for every pull request, and a CLI with `--json` on every command that coding agents can drive. - **A restore point for each database,** and moving a database to another server with seconds of downtime. - **Monitoring and searchable logs** for every container, and uptime checks on your public services, in the same dashboard as the deploys. The Free plan covers one server. Pro, coming soon, is $19 a month with 3 servers and $5 for each extra server. [Get started](https://ployz.dev/auth/github). ## FAQ ### Is there free Docker hosting? A little, with conditions. Render has a free 512 MB instance with limits, Railway's Free plan gives $1 of usage a month with a 0.5 GB cap per service ([pricing](https://railway.com/pricing)), and Cloud Run's free tier covers 180,000 vCPU-seconds and 2 million requests a month on request-based billing. None is meant to run a production app around the clock; Render's limits are in [Render's free tier](https://ployz.dev/blog/render-free-tier). ### What's the cheapest way to host Docker containers? A rented server. A Hetzner CX23 in Europe (about $7 a month) runs three or four small containers, and a CX33 (about $11) runs eight 512 MB containers or five 1 GB ones. In the US, a $24 DigitalOcean Droplet or a Netcup VPS in Manassas does the same job. ### Do I need a container registry? Only if you build images on one machine and run them on another, with private code. Building on the server, or on a platform that builds from Git, needs no registry. GHCR is free for now if you do need one. ### Can I run Docker Compose in production? On one server, yes. Docker's docs support Compose for single-host production. For several servers, see [how to run Docker Compose across multiple servers](https://ployz.dev/blog/docker-compose-multiple-servers). ### Why is Cloud Run so expensive in this comparison? Because I priced containers running all month. Instance-based Cloud Run bills around the clock, and one 1 vCPU instance is about $47 of CPU. Request-based billing charges only while requests are handled, which is far cheaper for spiky traffic. ## How I checked I checked every price on 2026-10-01 on each provider's own pricing pages and docs, linked next to each number. Everything is in USD before tax, in the cheapest US region unless I say otherwise. Render, DigitalOcean App Platform and Lightsail sell fixed sizes, so I used the smallest plan with enough RAM. Cloud Run egress uses Google's Premium Tier rate to North America. Past one 16 GB Droplet or one Hetzner CX53, the estimate adds more of the same box. I build Ployz, so weigh the "Where Ployz fits" section with that in mind. Let your coding agent run your containers on your own server with Ployz: [get started](https://ployz.dev/auth/github).