Docker containers are more than the latest IT trend. When used properly they can revolutionize your software development process.
If you’ve been reading the trades over the past several weeks, you have probably seen some articles about a new tool called Docker. Wired magazine has called it the next big thing. ZDNet said with Docker, containers are “finally coming into their own as a virtualization alternative,” and Infoweek said Docker is now “the defacto standard for Linux containers.” Linux containers, and Docker containers specifically, have received a lot of buzz lately. But what is Docker? What are Linux containers? More importantly, why should you care?
It works on my machine!
If you have worked in software delivery for any length of time you have probably already heard the line, “but it works on my machine,” more times than you would like. Frequently it’s just an excuse from a lazy developer but more and more often it reflects a growing problem in software development – environment disparity. There are a number of potentially disruptive differences between your developer’s workstations, the systems your QA testers use to shake out the new versions of the application, and your final production environment that your customers use. Here are just a few:
- Different directory structures
- Different operating system patch levels
- Different application configurations
- Different databases
If you’ve worked in IT for any length of time you have probably thought, “Wouldn’t it be great if this problem would just go away?” This is where Docker steps in.
Docker containers are essentially lightweight, portable virtual machines. They will allow you to create exactly the same environment and have it run anywhere you want it to – on developer’s workstations, QA servers, and even in production.
Docker is lightweight and portable
One of the key benefits of using Docker containers is that they are lightweight — really lightweight. Gone are the days when you need an extremely resource intensive hypervisor server to run a virtual machine locally or on a virtual computing environment. Gone are the days when you needed to wait minutes or, in some extreme cases, hours to get a brand new virtual environment application stack up and running.
What makes Docker so lightweight is that all of the technology Docker uses to create a virtual container is part of the operating system and is already running. The Docker daemon is simply a lightweight wrapper around them. Because of its lightweight implementation, you can run significantly more – in many cases several times more – virtual instances than you could on a comparable VM system. In most cases, a developer should be able to run an entire application stack – web servers, app servers, database servers, etc. – on their workstation alone.
Another important feature of docker is its portability. A single docker image is built from a docker file and that image can be run literally anywhere docker is installed. There is no additional configuration required.
Docker is manageable
Docker allows you to manage your virtual machines within your existing software development infrastructure:
- Docker images get built from a “Dockerfile” – a plain text, easy-to-write file that can be checked into your source control repository.
- Docker images can be built using your existing build infrastructure. They can even be included in your existing application build.
- Docker images can be version controlled and stored either in the cloud at Docker’s “hub” or privately on a Docker registry server.
Docker is stable
While the 1.0 version of Docker only came out in June, it’s important to note that it is essentially a wrapper around technology that has been battle tested for almost a decade now in some of the largest data centers in the world. Container technology was introduced into the Linux kernel in 2007 by Google – and this technology now is used to run everything at Google.
Docker is supported
Some of the best vendors in the industry are lining up behind Docker. Google has included in it’s new managed VM platform and has released an open source management tool for them and Amazon has included them in elastic beanstalk. For those who want to use Docker in their own data centers, Red Hat has announced extensive support for Docker in RedHat Enterprise Edition and is working on a dedicated platform for Linux containers.
Linux only…for now
As of July 2014, Docker is Linux-only but there are some exciting rumors of Microsoft working on Dockerizing ASP.NET applications. They are also researching a kind of container technology of their own.
Maven Wave can help
Whether you are new to cloud and virtual computing and are looking for a strategy going forward or a seasoned professional looking to upgrade to the latest tools, Maven Wave can help. Our staff of consultants are knowledgeable in both technology and your industry. We can help you implement technology solutions that will surpass the competition. Contact us to get started.