Containers and Cloud

The container concept for cloud infrastructure deployment is not new. These containers serve as pre-fab blocks that contain the equipment, configuration and management tools to allow fast plug-and-play data center setup. The uniformity of the hardware is both the strength and weakness of such a concept, trading versatility and flexibility in infrastructure deployment with agility and speed. Google first designed and implemented its container data center in 2005. Microsoft built its first container-based 700,000-sqft Chicago Data Center in 2009.

Now the “container” concept has been smartly extended from cloud infrastructure to data and cloud software. A cloud software container can work as a portable module for cloud applications to move between hybrid cloud PaaS or be offered as a flexible component of PaaS. Many such designs and implementations are still in the making. An example today which just started gaining popularity is called Docker, a Linux-based open-source OS-virtualization implementation. It essentially functions as a middle-tier abstraction layer or wrapper to shield off the cloud platform complexities from the application developers. Within 15 months of its inception till today, the total downloads of its trial version have exceeded one million and the community is fast growing. There are a few major global supporters for such an implementation and the startup company in San Francisco recently got a new round of $40 million venture funding.

Compared with the prevailing concept of Virtual Machines for deploying cloud-based applications, the Docker “container” goals at making the applications easily portable among hybrid cloud platforms with agility, zero startup time and one-click management. Of course there are certain trade-offs with the benefits of portability and platform-neutrality. Since it uses kernel sharing for platform reach, some security controls have to be sacrificed. Also Docker only supports single-host applications because the “container package” can get a lot more complex with multi-server applications across platforms and it’s a hard problem to resolve. Some supplemental solution proposals are out there on the market to overcome the limitation. Still, the “software container” concept and solutions are very new and yet to be tested for any IT production situation.

Current Docker v1.0 does not support Windows applications, but it is still a good start towards fulfilling a key market need. This in fact is also one workable approach for today’s distributed computing.