Mad about Containers
What is all the fuss about containers, the latest open source technology spearheaded by startup darling Docker? On the surface, containers could be considered another variation of integration tools that help companies stand up cloud applications faster and more efficiently. Are containers poised to be the next best thing in cloud application development, and if so, what about Docker’s competitors?
With a theoretical market valuation north of $1 billion as of April 2015, Docker, Inc. is one of those rare startups that attracted large amounts of venture attention and money in a remarkably short time. Founded a mere two years ago, the company literally came out of nowhere. The high expectations for a company that has so far only generated less than $10 million in revenue are driven by its open source version’s rapid adoption in the developer community and partnerships with such illustrious companies as Amazon Web Services, IBM, Microsoft, and VMware.
The open source project that spawned the eponymous company was started as an internal project for dotCloud, a struggling PaaS (Platform as a Service) company. Solomon Hykes, now the company CTO, was aiming to simplify and speed up how developers packaged and spun up applications for production. Docker was originally developed on Linux but since has been extended to support Microsoft Windows and Mac OS.
Docker did not come out of nowhere—the open source project is based on previous efforts including the Linux Containers project. Sun Microsystems’ Solaris Zones, which takes a similar approach to building application platforms, pre-dates Docker by decades.
Conceptually, containers are simple. Think of containers as a different way to slice and dice the basic components used to build large-scale cloud-based applications. Containers split the operating system resources needed to support an application into two buckets—the underlying OS and the components needed to support the application.
Instead of creating a full virtual machine for each application, containers use a shared resource approach to speed the creation of new systems by putting the applications on top of a lightweight virtual operating system (called boot2docker) that is a subset of a standard shared host platform. Each Docker container is isolated from its neighbor, but they do share the resources of the underlying virtual machine.
While the container approach has great appeal, containers are not the only way to build application platforms. Puppet and Chef, which take a recipe approach to building virtual machines on the fly, offer more options and flexibility for customization of virtual machines across workloads.
Docker is an interesting technology that has generated much buzz in the cloud development community. It offers an alternative to building applications on full virtual machines using the traditional golden image architecture, or using tools such as Puppet and Chef. The jury is still out as to whether Docker will be the next open source giant, joining Red Hat, or if it is merely the latest in a long series of development fads.