Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

The Shortlist of Docker Hosting

DZone's Guide to

The Shortlist of Docker Hosting

Chris Ward reviews several of the specialized and optimized Docker hosting services that have come into their own in the past year.

· Cloud Zone
Free Resource

What if you could learn how to use MongoDB directly from the experts, on your schedule, for free? We've put together the ultimate guide for learning MongoDB. Sign up and you'll receive instructions for how to get started!

We all know that Docker is simple to get up and running on our local machines. But, seamlessly transitioning our honed application stacks from development to production was a missing piece of the puzzle until the past six to twelve months.

Now there are so many specialized and optimized Docker hosting services available, it’s high time for a review to see what’s on offer.

One of the complexities with comparing Docker hosting options is that many are offering management and orchestration tools on top of actual hosting providers. Not all make it clear which provider they use, when or where, and this may or may not be an important issue to you. For this reason, I haven’t included services such as Deis Workflow, Docker Cloud, or ContainerShip as they don’t claim to be or offer integrated hosting services.

While I will include services that host elsewhere, these costs are included in the price.

Of course, it’s possible to just install Docker on a Linux-based VM on any hosting provider, and I could produce pages of profiles of "standard" hosting companies. Instead, I’ve tried to focus on services that offer something else on top of simple hosting to make your Docker experience smoother and enhanced.

Docker Machine

For many hosting providers, the easiest way to deploy and manage your containers is via Docker Machine drivers. Unless these hosts offer anything extra on top of the driver, I won’t list them separately. Currently, these include:

More are likely to follow soon, and you may be able to use the generic driver for other hosts.

Amazon Web Services (AWS)

AWS is the biggest cloud-hosting service on the planet and offers support for Docker across most of its standard EC2 machines.

AWS then offers the EC2 container service (ECS) that exposes a set of API calls for managing containers installed across your EC2 instances. ECS isn’t charged separately, but it sits on top of any other AWS resources your containers are using. This means that containers have access to the wide variety of services that AWS offers, including storage and scaling.

aws.amazon.com/ecs

Digital Ocean

Docker container support on Digital Ocean is simple, reflecting the way the company generally works. Sign into your account and create a new Droplet based on the Docker application.

Image title

This will create a VM running Docker on top of Ubuntu to use as usual.

digitalocean.com/community/tutorials/how-to-use-the-digitalocean-docker-application

Carina

Rackspace offers a Docker Machine driver, but it also has a container hosting service. Carina lets you create Docker Swarm-like clusters and push your containers from development to production. For example:

carina create chriscluster --wait --nodes=3 --autoscale

The process still seems a little convoluted, but it’s still in public beta. We’ll see improvement over time.

getcarina.com

Sloppy.io

This Docker hosting service launched just this month! It provides CLI tools, web interface, persistent storage between container launches, and statistics. Application stacks are constructed through a JSON file. Thanks to the underlying Mesos integration, Sloppy allows you to set machine specifications. For example:

{
  "project": "chrisexample",
  "services": [
    {
      "id": "frontend",
      "apps": [
        {
          "id": "node",
          "domain": {
            "type": "HTTP",
            "uri": "chrisexample.sloppy.zone"
          },
          "mem": 1024,
          "image": "chrischinchilla/frontend",
          "instances": 1,
          "port_mappings": [
            {
              "container_port": 5000
            }
          ],
          "env": {
            "LCB_DATABASE_URI": "mongodb://mongodb.backend.chrisexample/chrisexample"
          },
          "dependencies": [
            "https://docs.docker.com/backend/mongodb"
          ]
        }
      ]
    },
    {
      "id": "backend",
      "apps": [
        {
          "id": "mongodb",
          "mem": 512,
          "image": "mongo",
          "instances": 1,
          "port_mappings": [
            {
              "container_port": 27017
            }
          ]
          }
      ]
    }
  ]
}

sloppy.io

Giant Swarm

This is a new startup that likes to keep it simple and focus on providing a solid product and support. Giant Swarm doesn’t use VMs and will only deploy your containers and services to private AWS machines and their own bare metal services.

Exact pricing is a little unclear, and the service is invite-only right now, but they are open about their infrastructure, with several custom components available on GitHub. Setup is via a command line tool, with applications defined by a JSON file that resembles a Docker Compose file. For example:

{
  "name": "chris-app",
  "components": {
    "front-end": {
      "image": "registry.giantswarm.io/chrischinchilla/front-end",
      "ports": 8000,
      "domains": {
        "8000": "chris-app.com"
      },
      "links": [
        {"component": "redis", "target_port": 6379}
      ]
    },                                                     
    "redis": {
      "image": "redis:2.6",
      "ports": 6379
    }                              
  }
}

Images can be from the Docker Hub, as well as custom images from your account on the Giant Swarm registry.

Start your application with a simple command that can pass a variety of parameters to the JSON file.

swarm up --var=domain=chrisapp-chrischinchilla.gigantic.io

An API is available for more fine-grained control of your services, and co-workers can be organized into teams to allow for collaboration.

giantswarm.io

Google Compute Engine (GCE)

Kubernetes underpins Google’s container hosting and management service, their own open-source project that powers many large container-based infrastructures. The containers sit on top of Google’s own hosting service, one of the most reliable cloud-hosting services available. GCE provides a container registry and (in beta) a build service that will create Docker images from code hosted in Google’s Cloud.

https://cloud.google.com/compute/   

Microsoft Azure

While AWS looms over all other cloud providers, Azure is actually the second most popular. Backed by a large company, it’s not going anywhere anytime soon and is your best source of Windows-based VMs. Besides a Docker Machine driver, pre-built VM extensions are also available.

Azure is an official Docker trusted registry partner, either through their own VM image or by installing yourself.

https://azure.microsoft.com/en-us/

Heroku

Most of Heroku’s workflow is triggered by git push commands. These are still possible with a Docker setup, but an alternative is available via a Docker Compose plugin for pushing your containerized applications straight to the service. Heroku also maintains Docker images for most of the languages it supports.

https://devcenter.heroku.com/articles/docker

Quay

Quay offers container hosting tightly integrated with the existing Docker toolset. You log in to Quay’s registry via the docker command and manage containers in your account.

docker login quay.io

Quay will work with many common developer tools to allow for fully automated workflows, has CLI and web tools available for managing your container deployments, as well as logging and collaboration tools.

https://quay.io/

So if it’s time to move on from playing with Docker in development to integrating it with production, these are the hosting services to check out. Got something to add to the list? Let me know in the comments.

What if you could learn how to use MongoDB directly from the experts, on your schedule, for free? We've put together the ultimate guide for learning MongoDBSign up and you'll receive instructions for how to get started!

Topics:
devops ,cloud ,docker ,containers

Published at DZone with permission of Chris Ward, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}