Sergey Nivens - Fotolia
Docker, which is virtualization taken to the next level, is a great solution for keeping your software portable, which means supporting multiple underlying cloud platforms or even local databases. The ease of use and change tolerance of Docker's containers give it the edge over traditional IT orchestration. The automation of complex software and services management and coordination tasks has been used mostly in siloed environments. Docker has brought orchestration capabilities to multi-container distributed applications.
Now that doesn't mean Docker is the end-all of container management systems, and it certainly doesn't mean that containers don't have drawbacks. Docker is tied to one goal: making the DevOps role easier. With Amazon's recent announcement that it will support Docker natively in AWS, Docker has become a clear choice for open adoption.
However, as with any virtualization layer on top of hardware, it has performance drawbacks. When you use Docker in the cloud, you're essentially adding another layer under your application. This has advantages for portability, but it means you now need more power from the underlying hardware to achieve the same speeds. Hopefully, once more cloud vendors start natively supporting Docker runtimes this overhead will be reduced; but it will always be present.
CoreOS, a Linux distribution for huge server deployments, has started building a Docker alternative known as Rocket. Rocket is still in its early stages, but the key driving force behind it is to stay away from interoperability and focus only on the core application container concept. That has advantages in that it will never be tied directly to a specific vendor, but it also makes things more complicated when working with a specific vendor. Currently, Rocket appears to be a knee-jerk reaction to Docker siding with AWS, instead of having a goal to make the container concept ubiquitous.
Containers help you spin up new environments easily, and they keep your application in a neat little package. They're a great way to make sure you can update to the latest underlying operating system easily and to make sure your software works wherever you want to install it. Think of them as the modern package-management for the cloud.
Docker makes headlines at Devoxx 2014
Comparing AWS instances and Docker containers
Podcast: Is cloud app containerization really new?
Benefits and drawbacks of using secure containers for mobile security
Dig Deeper on Managed Kubernetes and container services
Related Q&A from Chris Moyer
Can an application have Python as a container, run SQL queries on an external Microsoft SQL database and publish the results on an Apache web server ... Continue Reading
The wait is over, as you can now trigger Lambda functions with SQS messages. Follow these steps to get up and running with this new capability. Continue Reading
Event-driven computing means no IaaS provisioning and no data center to run. Can I migrate all enterprise apps to be event-driven? Continue Reading