The open source Docker container technology is taking on the server virtualization market, offering what some see as a faster alternative to running full virtual machines over hypervisors.
For the latest release of Docker, the development team behind the technology has focused on making the software ready for enterprise use.
“This is the first Docker release where features take the back seat to quality,” wrote Docker creator Solomon Hykes, in a blog post announcing the latest version of the software, Docker 0.8.
“Some of the companies using Docker are looking to put [the software] into mission-critical roles, so we want to make sure it is of high quality as possible,” said James Turnbull, Docker vice president of services.
Docker is an application container that provides a way to package an application in a virtual container so that it can be run across different Linux distributions.
Hykes created Docker as an internal application for PaaS (platform-as-a-service) company dotCloud. The application generated so much interest since it was released in March 2013 that dotCloud rebranded itself as Docker Inc. and attracted US$15 million in venture capital investment from Greylock Partners.
“We still run the PaaS but our primary business is now Docker the platform,” Turnbull said. The software has been downloaded over 400,000 times.
Red Hat included the software in the beta of the next version of its distribution, Red Hat Enterprise Linux (RHEL) distribution, as well as included it in its OpenShift PaaS. Google has also added the software to its Google Compute Engine (GCE) service.
“Customers are recognizing that containers give them a lot of capabilities [to run] lightweight portable applications that have low overhead and easily scale and move across physical and cloud architectures,” said Mark Coggin, Red Hat senior director of RHEL product marketing.
The concept of containers has been around for a while—Sun Microsystems was a pioneer with Solaris Zones well over a decade ago. Docker is actually built on another container project, called Linux Containers.
Like a virtual machine, a container can hold an application, freeing the developer of the application from worrying about writing to the underlying system software. Unlike full virtual machines though, a Docker container does not include a full OS, but rather shares the OS of its host, in Docker’s case, Linux.
As a result, containers can be faster and less resource heavy than virtual machines, as long as the user is willing to stick to a single platform to provide the shared OS. A full virtual machine may take several minutes to create and launch, whereas as a container can be initiated in a matter of seconds. Containers also offer superior performance for the applications they contain, compared to running the application within a virtual machine, which incurs the overhead of running through the hypervisor.
Docker is estimating that an application running in a container can go twice as fast as one in a virtual machine. Also, more containers can be packed into a single server, because the OS is not duplicated for each application.
Turnbull suggested that the interest that Docker has generated is due in part to its simplicity. It provides an API (application programming interface) that administrators can use to weave Docker images into a larger scripted workflow.
Containers “are a complex technology and require a complex set of configuration and command line use. We provide an interface that wraps all around that and abstract it away for you,” Turnbull said.
The development team for the software, which included over 120 volunteer contributors for this release, concentrated on fixing the bugs in the software, as well as cleaning up the code, improving stability, catching up on the documentation and boosting performance.
The developers “will continue to focus on quality until it becomes a defining characteristic of Docker,” Hykes wrote.
Many of the improvements in version 0.8 have been around making the software go faster. Images and containers can be removed from a system much more quickly. The Docker daemon starts and stops much more quickly. Building source images is quicker. A new caching layer, which was the most requested feature, eliminates the need to upload an image from disk again, if it hasn’t been changed since the last time it was called.
Other improvements include a smaller memory footprint, the ability to create a larger number of containers and the elimination of several race conditions, which should make the software more stable.
The developers did save some time for new features, however.
For instance, Docker 0.8 client provides a small virtual machine, called Boot2Docker, that allows a developer to build a Docker container on an Apple Macintosh OS X workstation.
“It’s a big step forward for developers who are doing local testing and development with Docker,” Turnbull said. “Developers on OS X can make container, and connect to a Docker server and launch the container from there.”
Originally designed to run on Linux, the software is being reconfigured as a plug-in architecture that could allow it to work on other platforms as well, such as Microsoft Windows, through the use of a hypervisor.
The software also supports, for the first time, the experimental BTRFS (B-Tree File System).
Going forward, Docker will be updated once a month, with the next release, 0.9, issued in early March. New editions may or may not have major new features.
“If a feature is merged before the release date, it gets released. Otherwise, the next merge window is only a month away,” Hykes wrote.
Version numbering will follow the lead of Linux, in which a change in the first digit represents a major upgrade. An advance in the second digit after the period designates a routine update and the third digit will be for emergency bug fixes and other issues.
Docker is planning for a full production-ready “version 1” release of the software in April.
The company is also investigating various strategies to commercialize the open source technology, which is under an Apache License. Docker plans to develop the services for indexing and signing images as well as for creating private registries for Docker images. It will also offer commercial support for Docker and is considering releasing an enterprise edition of the software as well.