These days, you can’t have a conversation about the Cloud or DevOps without someone mentioning Containers. Although container technology has long existed in the Linux ecosystem, it was cumbersome and complicated, leaving users and operations engineers generally disinterested. In 2013, all that changed when Docker was born and brought container technology to the masses, making it trivial to configure and deploy Containers on Linux.
What are Containers?
Containers allow an application to exist in an isolated environment, much like a virtual machine, but without the overhead of a full operating system and hypervisor. Containers alleviate the headaches typically associated with the software development and management lifecycle by bundling your application with all of its dependencies and libraries, then running the entire container as a single, isolated entity. Along with the benefits of solving for software dependencies, this model gives more control to your developers to select tools and languages that allow them to be more productive and deliver business value faster, and with higher quality. For example, an application written for the Java 6 JVM can run alongside an application that requires the Java 7 JVM without having to worry about confusing configurations and library management in your production environment. Furthermore, Docker gives you the portability to run anywhere seamlessly, including your own private cloud or any number of public cloud providers such as AWS, Azure, or even a hybrid cloud of the two.
In 2014, Microsoft announced a partnership with Docker to enable Containers natively in Windows Server 2016. This revolutionary partnership was the first step toward a unified API for managing applications across Linux, Windows, and other operating platforms (Oracle Solaris will soon gain Docker support as well). With Microsoft Windows Server 2016 Technical Preview 4, we see not only support for native Docker Containers but also the NanoServer option, which is an extremely lightweight version of Windows Server, capable of serving as a general purpose Docker Engine.
Swarms of Docker Engines
In the world of Docker, a Swarm is simply a cluster of Docker Engines (host systems upon which we launch our Docker Containers) which are controlled as a single unit through a single API. By giving commands to the Swarm Master, you can control your entire Docker environment, including starting, stopping, upgrading, and monitoring your “Dockerized” Applications.
A Swarm also contains intelligence about your cluster configuration. Applications can be deployed according to any number of constraints and affinities. You can, for instance, tell Swarm to deploy a Slave Database instance on a Docker engine that has 4 cores and 16GB of RAM available, is equipped with SSDs, and to ensure that it is not running on the same server, or even in the same Availability Zone as its associated Master Database instance. Constraint labels are highly configurable, letting you define clusters for development, staging, and production or any other grouping delineations you can imagine.
The Hybrid Future: Tearing Down the Walls of the Operating Systems Wars
One of the most exciting aspects of Docker Containers is the demonstrated commitment of multiple enterprise vendors to operate through an open and common API. Now, for the first time, an operations team can easily manage their Windows, Linux, and even mixed applications loads from a single interface. This seamless integration allows an Operations Team to provide true Infrastructure as a Service, where a developer can have their application up and running in seconds as opposed to weeks or months, without concerns over the technology stack all the way from the operating system to programming language, modules, and environment variable.
While Windows Server 2016 is currently in pre-release and not ready to hit the market until next year, here in the labs at the Red8 Center of Excellence we have set up a demo environment with a hybrid Swarm of both Windows and Linux Docker Engines. We invite you to take a look at our demo here and contact us at [email protected] to learn more about how Red8 can help you optimize your time to market and deliver business value at scale more quickly than ever.