February 10, 2019 · Exploration

Exploring Docker for Windows

The Docker logo. © 2019 Docker Inc.

The Problem

One of the core services educational IT administrators are asked to deliver and manage is software licensing at scale. Many software titles in academia do not utilize cloud-based licensing, and for use on an enterprise scale require a hosted license server.

In the academic world, this kind of license server typically lives on-premise.  

One of the inherent difficulties this scenario presents is how best to conserve resources, both compute and financial, and consolidate licensing for many titles.

It's hard to justify the cost of 10+ (for example) virtual machines or physical servers to run each individual vendor's license manager. This makes it equally hard to maintain high availability for licensing services in mid-size IT units with limited resources.

The resulting solution is typically 1-2 servers which host licenses for many titles at once. The obvious downside is any update to license files, or other maintenance, creates downtime for licensing on all of the software titles.

This is, clearly, a significant interruption in service to customers that we want to avoid.

The Solution

Enter Docker. Docker allows applications to run inside "containers" on the same host operating system, while still utilizing the host's kernel and other drivers. Docker containers are small, lightweight, and can be easily controlled with a CLI (Command Line Interface).

This creates the separation between services (read: license management software for each vendor) that we need in order to update individual vendors' software without taking down the entire host – simply stop the container, pull the new version, and start it back up!

Robust, stable Docker containers with near feature-parity to their Linux counterparts only became available in Windows Server 2019, which comes with Docker support built-in.

But Does It Work, Really?

To test this, I created a Dockerfile (instructions that Docker uses to build your application) and used it to create a container image for Autodesk's FlexLM-based license server. It works well!

The container was able to serve licenses just like a full-featured physical server or VM would, but with less overhead and separation from other software vendors' license management software.

To test my image, and view other open source container images, check out the Autodesk License Container Repository.