Chris Hines

Enabling Portability of Workloads And Fighting Lock-In, with Docker

Chris Hines


This is perhaps one of the greatest characteristics of our Docker Containers-as-a-Service platform. After all, in some way it’s the reason why Docker has become as popular as it has today. In just 3 years, we have seen over 2 billion+ Docker Hub pulls, 400,000+ unique Docker Hub users, 200,000+ Dockerized applications and thousands of customers. A large part of the adoption hinges upon portability, making it clear that portability is a huge part of what our users are looking for. It provides the flexibility both developers and IT operations team need in order to succeed at their jobs. But what exactly is portability?

At Docker, we define portability as the ability to move workloads across different infrastructure environments, maintaining consistency while enabling Hybrid Cloud and multi-cloud for the enterprise. Portability is the magic that allows enterprises to move their applications through the development lifecycle from dev, test, staging and finally into full fledged production (cue the music!), and have them run the exact same way, regardless of infrastructure they’re being run on. It’s also what enables enterprises to move their workloads from their cloud infrastructure to their bare-metal servers, and back.

Today we are even seeing enterprises adopting multi-cloud architectures and moving workloads from cloud providers like AWS into other cloud service providers like Azure. But we will get to that a little later. Our goal here at Docker with our Containers-as-a-Service platform is to help enterprises go “DevOps”, by enabling both developers as well as IT operations teams to build, ship and run their applications and portability (along with agility and control) is a large chunk of the value. Let’s take a look at how the portability that CaaS delivers makes both sides ecstatic.


Portability for Developers

Developers are digital architects and constructors. They want to design and build awesome applications, quickly. In the past, long application development cycles due to bugs, patches and delays made building applications nightmare for developers and expensive for the organization. Today, developers can use Docker to solve for this. Since the Docker engine, can run on any infrastructure, applications can run exactly the same way on any environment. Developers can develop their applications with Docker Toolbox, test them, and then store the images in Docker registries (registries store and secure images) like Docker Trusted Registry or Docker Hub. IT operations teams pull the images, stage them and run them in production with Universal Control Plane or Docker Cloud, streamlining the entire process.

The image below is a CI/CD pipeline enabled by portability, using APIs with GitHub, testing images with Jenkins, storing images in Docker Trusted Registry, and running them in production with Universal Control Plane.

Screen Shot 2016-03-29 at 8.26.23 AM.png


Portability for IT Operations

IT operations teams are tasked with not only managing and securing the IT environment, but also keeping the business top of mind. IT Ops teams need to select the services that make the most business sense for their company. Making decisions such as adopting the Hybrid Cloud are choices IT teams must decide on, based on their business needs. Modern enterprises like the dual approach of utilizing the cloud as well as bare metal services that they can host locally, behind their firewall. For this to work, they need to be able to move their workloads across their cloud and on-premises environments. Portability is what allows this to take place.

Let’s look at another example, multi –cloud. Let’s say X Company is using AWS, but their company has been working closely with Microsoft on a separate project. Microsoft is willing to give them a huge discount if they move their workloads over to Azure, and would save X Company a boat ton of money in the process. The team needs a way of moving all of their AWS workloads over to Azure. Given that Docker is cloud agnostic, IT teams have the ability to move their workloads from AWS over to Azure with Universal Control Plane or Docker Cloud, and cash in on their deal with Azure. This is a use case that is often times overlooked by IT teams, and because of this I think it important to call out.

Below is a reference architecture that displays a decentralized develop infrastructures, a centralized portal maintained by IT and apps being run with Docker Datacenter (UCP + DTR + Support)  in the cloud or on-premises. It also shows how workloads can be move across hybrid infrastructures and from one cloud service provider, over to another.

Screen Shot 2016-03-28 at 4.37.43 PM.png


Avoid the PaaS Black Box

One question that comes up when we talk about the portability that CaaS provides is, “what about PaaS?” Prior to the availability of CaaS, many organizations went the PaaS (Platform-as-a-Service) route. Chances are, your company is one of them. The problem is that PaaS solutions are locked down, and often packaged together solutions. They provide you with what you initially need to get your work done, but do not provide the flexibility or portability that today’s teams require (this is something that users discover later on). PaaS services are opinionated, and are built to force users to use only their infrastructure, making it difficult to look outside their stack. Because of this, organizations often have to do double the work, with developers working in development, and IT Ops teams having to rewrite everything for production. PaaS solutions are often times unable to utilize the APIs (many do not support Docker APIs and require converters) that developers use to build their applications, and lack the plug-ability that CaaS provides (Docker CaaS comes with batteries included, but swappable).

Our goal is to make building, shipping and running applications seriously easily for all of you, our users. Portability is a key way in which we deliver on that promise. Whether you’re a cloud-only shop, bare metal fans, hybrid cloud aficionados or multi-cloud opportunists, you can all benefit from the portability of the Docker CaaS platform. Portability, the way you need it.

Watch this webinar replay of myself and Mike Coleman discussing cloud portability with Docker. Mike also does a pretty kick-a$$ demo showing how to migrate workloads across different cloud service providers with Universal Control Plane, part of Docker Datacenter.



Check out these resources to start learning more about Docker CaaS:



Learn More about Docker


2 thoughts on “Enabling Portability of Workloads And Fighting Lock-In, with Docker

  1. “applications can run exactly the same way on any environment”. This is not true because containers are tied to the architecture they were built on. You can’t run on an ARM machine a container you built on an x86_64 machine.

  2. Brian Christner

    Great article Chris! You've hit the nail on the head with the PaaS blackbox. This is a great explanation.

Leave a Reply