For those who have worked with open-source technologies for some time would know that containerisation of apps and services is not a new concept. I was first introduced to the concept of virtual containers when Parallels formally known as ‘SWsoft’ and now called ‘Odin’ first released a product called Virtuozzo which provided a virtualisation technology that enabled operating system virtualisation. This was a platform that allowed for many Virtual Private Servers (VPS’s) running on one physical host server.
However this technology focussed itself around operating system virtualisation where the kernel layer was accessed via a proprietary abstraction layer and enabled the operating system and apps to be segmented and delivered independently from the other virtual containers also running on the same host.
Other technologies followed this same pathway and delivered operating system virtualisation with each operating system managed as a virtual machine; technologies such as Hyper-V or VMware are most commonly known today. We now understand and accept this concept of virtualisation as the way forward in getting the most value from our hardware assets. Although a new revolution is happening and that is in the form of application containerisation.
Docker Inc. is a company who are quite new to the industry and was founded only in March 2013. They came to market with a new open source technology to enhance application virtualisation providing a new virtualisation layer that sits on top of the operating system enabling containerisation to occur at an application level. This technology is helping software developers build distributable apps without the complexities of missing dependency components and system configuration issues that often plague system admins with issues when deploying new apps on servers or particularly servers in shared environments.
Hybrid cloud environments are now becoming a very common model with enterprise wanting to maintain security but at the same time utilise the value of a cloud providers infrastructure for agility and business continuity. With that in mind this means apps are now more likely going to be running in either the cloud or on servers within the corporate datacentre or a combination of both. This creates challenges for the both the developers building the apps and for I.T pros who deploy and manage these apps and their data.
Now commonly referred to as Docker Containers; this is a technology that developers and I.T pros need to understand as we work to get more value from the resources deployed in our virtual environments.
Docker Containers attempts to address these problems by providing a common base to run an app and all its dependencies and configuration in an isolated container, the way it would normally if installed into the host operating system but without the conflicts. Docker’s documentation and videos I have seen like to explain/relate the container concept as that similar to how the freight industry move large shipping containers from port to port using cargo ships. The idea that large rectangular shipping containers were designed as a common ‘container’ to house all types of freight and are compatible with each port when offloaded onto the docks is the bases to how Docker Containers were developed.
An simple example of how this might work; let’s say we have a web app that uses a MySQL database as it’s backend and the app itself is written in PHP. Typically if we were to run this application on a server with a Linux distribution as the operating system we would need to install packages for PHP, MySQL and a web server such as Apache. This scenario is common and generally works great for standalone apps. Let’s now assume we need to add a new web app to the same server that requires a newer build of PHP with specific PHP settings which introduces a issue for the first app we deployed on this server. We might be able to solve this problem with some specific configuration in Apache; however if the Docker engine was available; we could have both apps running independently on the same server each with their respective PHP builds and without any conflicts.
A Docker Container is different from a Virtual Machine. Docker container’s only hold the applications and components, leaving out the guest operating system. The result is an optimised use of the host’s resources. You can still allocate compute and storage resources to a Docker container like you can with a virtual machine, without wasting overhead on supporting a guest operating system running in multiple instances on the same host.
Docker virtualisation technology is bringing new opportunities for service providers and enterprise but I think what is even more significant and profound is a partnership Docker Inc. formed with Microsoft Corporation late last year (October 2014). Microsoft have embraced this new open-source technology and committed to delivering Docker as an integrated component for Windows Server in the next release coming to market this year.
Docker will be integrated into Windows Server 2016 for next generation application virtualisation (Windows will now join the containerisation revolution).
Windows Server 2016 brings to the table many new virtualisation enhancements including; further enhancements to Hyper-V along with the new addition of the Docker Engine, introducing native container support for Windows and finally a new micro-build called Windows Server Nano which is a special build of Windows Server with stripped down bits providing only the components needed to deliver a cloud optimised experience in a guest VM. Windows Nano Server aims to cut down the waste much the same as Docker does in a slightly different context. These new enhancements make the next release of Windows Server one to watch.
Docker containers is well worth a look today. If you’re a Windows user, you can load a binary for Windows that runs on all current versions of Windows including client versions such as Windows 7 or 8, x64 bit support is available and Docker also provides a very large marketplace with existing apps already ready to deploy as containers on Windows. I encourage you to visit docker.com to learn more.
If your interested to know more about the Docker partnership with Microsoft read the press releases from both organisations.
- Microsoft Corporation announces partnership with Docker Inc.
- Docker Inc. Partners with Microsoft blog post