You may want it cheap and easy. Or you have complex requirements. For each taste, there exist Docker hosting providers out there. This article shows you 6 Docker hosting options together with pricing info, and a getting started guide.
The privacy laws in the European Union pose requirements for using external service providers, including hosting providers. To use a service provider they must either be from the European Union or they need to be certified under Privacy Shield.
I also only consider managed Docker hosting options, because I want to focus on developing applications, not on managing them. There are two unique approaches: - Managed Docker hosting - Managed Kubernetes
Heroku is a Platform as a Service (PaaS) offering. They offer simple hosting for many applications with their own container solution.
You can also host Docker containers (getting started guide). Besides applications, Heroku offers managed databases like Postgres, Redis, and Apache Kafka. Their simplicity makes Heroku a great choice for managed Docker hosting.
Pricing starts with a free hobby instance that sleeps after 30 mins of inactivity. Paid options start at $7/mo per project for one instance and you can scale up and out.
Sloppy.io focuses solely on managed Docker hosting. You can use their CLI to deploy from your CI pipeline. They also have built-in load balancers to scale your application horizontally, custom domains, persistent volumes, rollbacks, monitoring, private registries, and more. Everything you would expect from a Docker-focused hosting provider.
I love DigitalOcean (DO) for their clean UI and straightforward pricing. You can easily set up your own pre-configured droplet (that's what they call their VMs) and host your Docker container yourself. But you still have to manage your VM.
The easiest Docker option on DO is to use their managed Kubernetes offering. DO also offers managed databases like MySQL, Redis, and Postgres.
Google has a solid managed Kubernetes environment called Google Kubernetes Engine (GKE).
AWS provides two container management solutions: Elastic Container Service (ECS), and Elastic Kubernetes Service (EKS).
ECS is Amazon's own container management solution, while EKS is a managed Kubernetes offering. ECS has no separate cost for managing your cluster. With EKS, you pay $0.10 per hour per cluster for the management nodes. That is ~$74 per month and does not include any compute capacity to run your containers.
For both services, AWS offers two kinds of underlying compute capacity: AWS EC2 instances and AWS Fargate.
On EC2 you pay for VMs with a certain capacity. The sum of all your booked VMs for a cluster defines its total capacity. EC2 pricing starts at <$10 (a production cluster starts somewhere between $50 and $100 per month).
With AWS Fargate on the other hand, you pay for each container you launch in your cluster. You pay per second for its memory and CPU. AWS Fargate pricing starts at ~$10/mo for one continuously running container.
You can find a deeper run down of ECS vs EKS vs Fargate on the logz.io blog.
There are many options to host Docker containers on Azure (I'm working on an overview article for this) For simple to medium complex use cases, Azure App Service is the best way to go as managed Docker hosting. Here is a good getting started guide (using Azure Container Registry). You get up to 10 apps (in one 1GB instance) for free forever on Azure, more advanced options start at ~$14/mo.
More advanced use cases can use Azure's managed Kubernetes: Azure Kubernetes Service. Get started with this guide. AKS pricing starts at ~$35/mo and goes up from there (less if you reserve your instance for 1 or 3 years).
When you're getting started with running Docker containers, choose a managed provider (unless you want to administer servers). Whether you just need managed Docker hosting or a full-fledged managed Kubernetes service depends on your specific needs.
Kubernetes takes more time to get up and production ready with your containers, but offers more flexibility later on. Managed Docker providers on the other hand, give you a simple and robust solution to host your containers.