The idea behind Docker is elegant: Take an application and package it in a container that can be deployed most anywhere. Docker containers use the existing virtualization resources of the underlying OS, so unlike VM appliances, they can be instantiated quickly and require little overhead.

Originally, Docker required a patched version of Linux with a custom kernel to run properly. Docker 0.7 does away with this limitation and runs as-is on all major Linux distributions, including Amazon EC2 VMs. Engineers at Red Hat were instrumental in making this happen, in big part because of their use of Docker in the most recent release of Red Hat Enterprise Linux.

Part of how Docker was ported to all Linux variants was via a new storage driver, which allows Docker containers to use one of a number of filesystem types. Since Docker relies heavily on AUFS, which isn't a standard Linux kernel item, Docker's engineers had to create a storage driver API to allow Docker to work with the filesystems that are nominally available in Linux. One handy side effect of this innovation: It'll allow Docker to work with many other filesystems in the future, including BTRFS, ZFS, Red Hat's own Gluster, and many more.

Another new feature is offline transfer, which allows a Docker container to be saved as a stand-alone file and reloaded anywhere. One possible use for this would be for software vendors to create a sealed appliance for a given customer so that they could provide them with a client-specific version of a piece of software for deployment. And the "links" feature allows containers to discover each other and exchange secure communication -- for instance, between an application container and a database container.

Red Hat is not the only partner Docker Inc. (the commercial organization behind the Docker project) has lined up. Others include Rackspace (also behind ZeroVM), Puppet Labs, and Linode, all of which already make use of Docker for existing solutions.