Open source keeps shortening the path between innovation and adoption: Think Hadoop and big data, OpenStack and cloud, or MongoDB and NoSQL.
Docker, an open source project that enables you to package any application in a lightweight, portable container, is rocketing toward the all-time speed record. Launched a year ago as an Apache 2.0 project, Docker has been downloaded more than a million times, already enjoys support from Google and Red Hat, and boasts nearly 400 contributors -- who have together written 100,000-plus lines of code in the Go language. And get this: Its 1.0 production version is not even due out until next month.
Why the whirlwind? Because Docker addresses an overwhelming need: The ability to package applications in such a way that they can run anywhere. Sure, you've heard that one before. But the killer part is that there are few dependencies because Docker runs on all major versions of Linux, building on the LXC (Linux Containers) features of the Linux kernel. Ubuntu is the only "officially tested" Linux version today, but Red Hat began supporting Docker in RHEL 6.5 and early adopters are already deploying Docker containers on Amazon EC2, Google Compute Engine, and Rackspace clouds.
Wait a minute, can't we already move apps around in VMs? Sure, but you need a compatible hypervisor to run those VMs. Plus, an entire VM with OS included represents a much bigger container than one holding the application alone. A Docker application is entirely self-contained and deploys itself in its own directory; the fact that it has its own sandbox makes it inherently more secure.
Basically, Docker makes installing a server-side Linux app almost as easy as installing a mobile app. And you can do it from the Linux command line in a snap, as InfoWorld's Peter Wayner discovered in his recent First Look. Among other things, this enables you to use various data center automation scripting tools, such as Puppet or Chef, to roll out large-scale application deployments. You can also manage those deployments from the command line, distributing application updates quickly and efficiently.
In a recent interview, Solomon Hykes, the founder and CTO of Docker, Inc. (the commercial custodian of the project, formerly dotCloud) said he believes that Docker's popularity stems in part from the rise of a new breed of application that demands portability. "They are distributed, service-oriented, and loosely coupled over the network, across different languages, and run over any number of machines," Hykes said in an interview with Cloud Technology Partner's Mike Kavis. "Applications today are being architected [to be] more distributed than ever before."
In other words, Hykes sees Docker as helping to usher in a new era of Internet-native applications that interconnect via API across platforms. More simply, though, Docker provides an easy answer to the problem of cloud lock-in. Don't like your public cloud provider? Then pack up and move your apps to any other cloud that runs Linux, public or private.
An open source ecosystem has already sprung up around Docker. Some of these projects are built using Docker code, such as Dokku, a mini, Heroku-like PaaS, or Memcached as a Service. Other projects are tools to extend Docker, such as the Shipyard Web UI or the Puppet module for installing Docker. A nice, graphical "mind map" of the Docker ecosystem has been drawn by Krishnan Subramanian, director of OpenShift Strategy at Red Hat.
If nothing else, Docker shows the incredible staying power and extensibility of Linux, since it draws on the native capabilities of the Linux kernel itself. Thanks to Docker, the operating system that ushered in the open source era can play a key role in avoiding the lock-in hazard that plagues the cloud era.
This article, "Docker's red-hot application portability solution," originally appeared at InfoWorld.com. Read more of Eric Knorr's Modernizing IT blog. And for the latest business technology news, follow InfoWorld on Twitter.