It wasn’t too many years ago that I was doing a lot of Solaris work for a certain agency of the Federal Government. In that role, Solaris Zones were how we achieved higher utilization of each host server, higher security of each virtual container (zone) and faster time to deployment of new apps and projects. I remember thinking at the time that Zones would revolutionize how IT does things due to their inherent awesomeness. Not that this was before Oracle got its dirty hands on Sun Microsystems. At the same time, something was brewing at a startup called VMware. A hypervisor-based virtualization platform that would change the way IT operates and bring in the next huge shift in the computing industry.
Fast forward a few years and it is pretty clear who won that race. VMware leveraged its talented developers as well as a strong services organization to lead the industry in virtualization. Sun, as with nearly all of its other product lines, couldn’t sell water to someone who was on fire and zones failed to get the traction we were all hoping for. The acquisition by Oracle was the final nail in the coffin as waves of customers sought to dump Sun now that they were affiliated with the evil Oracle corporation.
Over the years, I have seen projects grow in the open source community to promote and develop container-based virtualization platforms. Two of those are OpenVZ and the Linux Container project, known as LXC. Of the two, LXC seemed more in line with what Solaris had done with Zones, and I hoped that it would gain some serious steam and challenge the virtualization platforms out there like KVM, Xen and VMware. LXC has historically been very difficult to use for non-Linux Admin users and I believe that has been the largest barrier to wider adoption.On a personal note, I have always believed that container-based virtualization is much better than hypervisor-based in terms of performance, security and standardization. Hypervisor-based virtualization, however, is more flexible, especially if you run Windows workloads. Who really runs Windows for critical workloads these days though? The Cloud was born and bred of Linus and open-source and these vastly dominate the landscape of current and future computing.
Recently, I heard of a newer entrant to the Cloud space called Docker. Formerly known as dotCloud. What the brilliant folks at Docker have done is “API-ify” (my word) all of the complexity of working with LXC containers along with some additional app-level stuff to make applications fully portable across various infrastructures. This is HUGE. Now applications can be deployed in self-sufficient container that can run almost anywhere. No more hardware or Cloud vendor lock-in. The Docker folks can do a much better job at describing that they do and how they can help you take your PaaS and Cloud to the next level. The snippet and slide deck below are from the About Docker page. I invite you to read through and then visit the Docker website for more info.
Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere.
Docker containers can encapsulate any payload, and will run consistently on and between virtually any server. The same container that a developer builds and tests on a laptop will run at scale, in production*, on VMs, bare-metal servers, OpenStack clusters, public instances, or combinations of the above.
Common use cases for Docker include:
- Automating the packaging and deployment of applications
- Creation of lightweight, private PAAS environments
- Automated testing and continuous integration/deployment
- Deploying and scaling web apps, databases and backend services
* Please note Docker is currently under heavy developement. It should not be used in production (yet).