Docker tackles one of the challenges faced in building applications in Linux environments. The dependency of libraries or services being available on the target system can be a difficult nut to crack. This isn’t as big of an issue in say Windows (did anyone say .NET Framework version X required?) as it is in Linux environments. The challenge is pretty simple. A developer builds an application in an Ubuntu workstation distro for example and then needs to deploy it to a cloud based VM running some other flavor of Linux with different default services and libraries. To further complicate the use case the application may need to be spun up on another cloud provider using a different Linux distro with different base services installed.
Solutions like Docker hope to solve this challenge by creating application containers that have all the dependencies virtually available. For us Windows veterans we’ve seen similar solutions for delivering desktop applications across different Windows platforms. A great example is VMware’s ThinApp. ThinApp allows an administrator to package an application like Office 2013 into a virtual container. That container can then be deployed onto any Windows platform regardless of the software running on that target system.
The major difference between the solutions is that Docker is positioned to help app developers solve the challenge of building applications for Cloud environments where they cannot depend on a consistent platform environment with all the required dependencies.