UPDATE:Be sure to check out our more updated What is Docker? for more information on Docker, how it works, and the advantages Docker provides over traditional VMs...
There's been a lot of talk about Docker and the impact it's having on deployment automation. Instead of running virtual machines, dev ops engineers are throwing projects into self sustaining, lightweight linux containers. While Docker has proven to be a leader in deployment automation, it's only four years old. Many developers are struggling to see the benefits or even the reason for using Docker at all. In this article, we discuss what exactly Docker is and why using Docker makes sense.
Docker is a software container platform. It is a lightweight linux container that runs on a specific set of configurations. These configurations include all of the specific libraries (and their versions) necessary to run an instance of your application.
Have you ever collaborated on a project with someone and run into environment issues? Either you didn't have the correct version of something or your environment wasn't configured correctly.
The described scenario is what many developers refer to as the "it works for me" dilemma. Docker solves this issue. Regardless of how a developers environment is configured, Docker containers ship with all the necessary configuration details needed to install and run independently on any given host.
Developers familiar with virtual machines(vm) understand the reason for a self contained environment. After all, virtual machines are simply different instances of an operating system running on the same host. So how is Docker different? What does Docker can that any other self contained VM can't?
Docker is different than a vm for several reasons. Docker is not running on it's own operating system. Rather, Docker containers make use of the host linux kernal they are running on. This abstracts the configuration for your app away from the operating system it's running on. Not only is this faster, it also requires far less headaches for developers trying to collaborate in different environments.
With a more lightweight solution, Docker makes it possible to run more distros on the same machine. It also makes development time much faster. Not only does Docker improve onboarding process, it also makes jumping into existing builds that much easier. Developers aren't held back by environment issues and can run and debug apps more quickly. Time to jump aboard Docker?