Just two years after it’s release announcement, Docker Cloud has disconcertingly revealed that “runtime is being discontinued.” Which is more than a little tragic, since Docker Cloud was one of the first groundbreaking SaaS solutions using Docker Swarm as its underlying container orchestration mechanism. As of May 21st, users will no longer be able to manage clusters, create and deploy stacks or auto-redeploy applications. Worry not. When these kinds of IT curve balls come at you, there is more than one solution—and cliche—to resolve your migration concerns.
The Search for a Migration Solution
In searching for a replacement Docker Cloud fix, it’s worth considering the lay of the land in container orchestration. There’s been a short—and practically uncontested war—going on behind the scenes, but Kubernetes has emerged as the current victor to all. AWS and Docker have even sworn fealty by announcing K8s support, just as most other service providers have too. (For more on the container orchestration war, check out our blog post here.)
Using Kubernetes will significantly speed up the process of deploying clusters. Yet, despite its advantages, it is still quite a complex solution. While this complexity may work advantageously for more experienced K8s users, it can be overwhelming for beginners. So, there might be a better-suited option for your need. There are also several solutions that still use Docker Swarm as an orchestration system. Ideal for those who aren’t ready or don’t have the time to transfer their entire infrastructure to Kubernetes.
This article aims to outline some of the migration advantages and disadvantages of available solutions.
Google Kubernetes Engine (GKE)
The Kubernetes Engine is cluster management and orchestration for running Docker containers on Google’s Cloud Platform (GCP) services. With GKE, you can schedule containers into a cluster and manage them automatically according to requirements defined in your configuration files. As it is based on open-source Kubernetes, it’s the simplest way to launch a K8s cluster. You can achieve this in just a few clicks via the sophisticated GCP Console. GCP will launch a specified number of Google Compute Engine instances and deploy default Kubernetes services.
The most difficult part of migrating from Docker Cloud to GKE will be converting your Docker Cloud configuration file into Kubernetes manifests. Made complex by their YAML file format. With GKE, you will only pay for the GCP resources you use for building your Dockerized application. Thankfully, GCP cloud pricing is pretty competitive with a large number of discount opportunities.
- Gain production-ready Kubernetes clusters
- A Kubernetes community on tap to help with examples and best practices
- Cluster provisioning relies on GCP, so you can be sure of a high level of availability
- Kubernetes management resource abstraction
- Upgrade available to Kubernetes cluster through the GCP console
- Use container optimized OS on host machines
- Tight K8s integration with other GCP resources
- Kubernetes complexity (it will be time-consuming to convert your Docker Cloud configuration file into a Kubernetes manifest)
- Infrastructure fully relies on GCP services
- Paid solution
- Limited version selection
Azure Container Service (ACS)/Azure Kubernetes Service (AKS)
ACS—or AKS in beta—are Microsoft’s answer to hosting solutions for open-source orchestration tools. ACS supports Kubernetes, Docker Swarm, and Apache Mesos. You can also use ACS for a standalone Docker Engine installation. If you choose Kubernetes orchestration, Azure takes care of the Kubernetes controller and exposes the standard Kubernetes API.
ACS should be considered more of a collection of deployment templates rather than true container orchestration. Especially since you are unable to upgrade a cluster once it has been deployed. To upgrade clusters using ACS, you need to create a new cluster, migrate your containers to it, and then remove the old cluster.
One particular benefit of Azure though is that making templates from your infrastructure is very easy. After you create and configure your services, you can basically take a snapshot and deploy it again. If you’re familiar with Amazon’s CloudFormation Templates, Azure’s system will be easy to use.
- Supports multiple orchestration systems
- Provides a comprehensive web UI and CLI for cluster management
- Provisions infrastructure with Azure resources
- Doesn’t support Kubernetes upgrade (for this you will need to redeploy clusters)
- Infrastructure fully relies on Azure resources
- Paid solution
- Not quite as slick as GKE
Amazon Web Services
AWS is perhaps the most mature public cloud available, and many businesses already have a well-established presence on there. AWS built their own proprietary container orchestration system: the Elastic Container Service. The core of ECS is cluster management which handles all container coordination and state management tasks. But ECS is perhaps not as popular as AWS originally hoped. It’s not a solution that Caylent would recommend either.
AWS’ AKS is the long-awaited competitor to GKE and Azure’s AKS but it’s still in preview mode and has been since the announcement in November 2017. If you want to migrate to AWS, use Kubernetes Operations (KOPS) or Kubespray are just a couple of examples of automation tools which can help simplify your cluster deployment.
- Built by AWS
- Full access to native AWS features and services
- Total environment management
- Easy-to-run resource allocations and autoscaling to meet traffic demands
- Complete control over the manual build
- Not as easy to deploy as Kubernetes
- ECS is clunky and difficult to manage
- Paid solution: You pay for the AWS resources needed to run your application
Rancher is an open-source container management platform provided by the Rancher-Labs team. Rancher allows you to manage clusters with different underlying orchestration system. It supports Kubernetes, Apache Mesos, and Docker Swarm out-of-the-box. The goal of Rancher is to create portable infrastructure services around Docker including elastic block storage, virtual networks, failover load balancer, security groups, monitoring, database services, and much more.
You can transfer all of these features between your own servers and different public clouds using several regions of any one cloud provider at the same time. On top of that, since there is no dependency at infrastructure level, choose a cloud based on reliability, performance, price, and trust.
- Web GUI cluster management
- Supports multi-environment cluster systems ( Swarm, Kubernetes, and Mesos)
- Provides additional enterprise-grade features (self-monitoring with pre-built dashboards, log audits, and role-based authorization, etc.)
- Works on any cloud or infrastructure platform
- Requires the installation of the Rancher server
Portainer is a powerful solution for the operation and configuration of Docker containers. It’s a web application that allows you to configure and manipulate containers. Portainer offers rich functionality that allows you to perform high-quality and full-fledged configuration.
Portainer can manage standalone Docker engine and Docker clusters in Swarm mode. You can install Portainer as a native Docker container on any Docker engine (Linux or Windows hosts).
- Simple to use, with great UI
- Easy to set up and launch your first Docker container
- Allows you to connect to remote nodes and audit container logs/stats
- Infrastructure should be ready before launching your first container with Portainer
And finally, you can stay with Docker which officially supports Kubernetes on Docker Community Edition (CE) and Docker Enterprise Edition (EE) solutions.
Docker CE/EE Swarm
Docker CE is a set of free Docker products. Launch it on Mac, Windows 10, AWS, Azure, CentOS, Debian, Fedora, Ubuntu, and from Docker Store.
Docker EE is a subscription package which is available on the same certified operating systems and cloud providers.
The first step to moving from Docker Cloud is to organize a Docker Swarm cluster, which will provide a high level of availability and reliability. Start your cluster on local servers and in the cloud. In addition, this migration method will support hybrid clouds. In fact, your new Docker Swarm cluster will not be too different from your initial Docker Cloud solution.
Additional changes do need to be made for the Docker Cloud configuration file (which is described in YAML format). Your docker-cloud configuration file needs to be transformed into a docker-stack.yml file which describes your application stack on the Docker CE/EE cluster.
- Works practically everywhere (Linux, Windows, cloud, on-premise, etc.)
- Built into official Docker CLI and uses native Docker API
- A simple transition from Docker Cloud
- Can be free (with Docker CE if you have your own infrastructure)
- Swarm is losing to Kubernetes in features (less extensible) and popularity (even Docker now supports Kubernetes out-of-the-box)
- Need to install a web UI using free or Docker EE plugins
- Limited to the Docker API capabilities
- Swarm is not as stable as Kubernetes
With a rocky 2017 just behind them and Kubernetes’ clear ascension to most popular container orchestrator, Docker’s future certainly looks unclear at the moment. Are you of the opinion, like Chris Short (CNCF ambassador) and fellow DevOps writer), that “Docker, Inc is Dead“? Or do you see life in the old dog yet?
For simplicity, Caylent would suggest going with GKE. For robustness and complete build control, choose AWS through KOPS and Kubespray. If you need assistance migrating to any of the above options before May 21st, reach out to us here at Caylent. We have the in-house expertise to talk you through the best solution for your needs.