First off, what is Docker? Actually, let’s back up. What is an application? An application is software that runs on a server or client machine and is made up of various parts such as Storage, Engine, User Interface, and Configuration or Settings files. When you deploy, for example, a web application, you are deploying a database, your compiled source code onto a web server, your configuration files that contain environment-specific information, and you may have other components that help your application run, such as web services, application services, indexing or caching engines, etc.
Docker allows you to take all of those ingredients that make up your application and put them into a software container which will house and run your application on any server, providing you an additional layer of abstraction that allows you to quickly, and relatively painlessly, deploy software applications—no longer having to worry about setting up the Linux or Windows server environment whenever you provision a new virtual machine, or choose to re-host your application. “Docker relies on Linux kernel features… to ensure isolation and to package an application to run as expected across different Linux operating systems—supporting a level of portability that allows a developer to write an application in any language [or framework] and then easily move it from a laptop to a test or production server.” (http://searchservervirtualization.techtarget.com/feature/A-brief-history-of-Docker-Containers-overnight-success). And as we discussed in a previous post, it is exactly our goal to further our agility by promoting portability.
Should I Be Using This?
Yes, you should! In fact, you probably already do. In its short history, Docker has exploded into the market and offered a solution for reducing the complexities and tedium surrounding configuration and release management in the realm of software deployment and hosting. By adding this layer of abstraction, service providers have been able to include support or integration with the Docker engine. A short list of such providers include:
- 1Amazon Web Services
- 2Configuration Management tool leaders: Chef and Puppet
- 3Google Cloud Platform
- 4IBM’s PaaS offering Bluemix
- 5Jenkins Continuous Integration
- 6Apprenda PaaS
- 8Microsoft Azure
- 9Cloud Foundry
- 10VMware (if you can’t beat ‘em, join ‘em, an that's exactly what they've done)
In NTT DATA’s Cloud Services, our advisors and strategists have found some of the CIOs and IT Executives we’ve worked with and spoken to at larger enterprises are reluctant to deploy Open Source solutions. In fact, we find that it is mainly small to medium businesses (SMBs) or tech companies that are leading the charge on Open Source solutions. Companies that are lean are able to take advantage of Open Source solutions since the community support and collaboration fits well into the culture of your typical small business. As illustrated in the list above, the biggest players who have embraced Docker are all service providers: Cloud Hosting, Application Development tools, Virtualization technology, and Platform as a Service (PaaS) providers.
The natural order of IT service providers (or any service providers) is always keen on leveraging technology and services which allow furthering abstraction for common tasks (e.g. payroll). In IT, we have seen an explosion occur with Infrastructure as a Service (IaaS) providers like Amazon or Rackspace. We’ve seen outright replacement for homegrown or off the shelf applications with Software as a Service providers like Salesforce.com or Workday. We’ve seen Platform as a Service (PaaS) providers like Apprenda or Cloud Foundry providing a layer of abstraction over common functionality, management and monitoring, scalability, resource allocation, and environment provisioning. PaaS allows us to spin up Dev and Test environments and then use build systems and deployment scripts to move workloads onto Virtual Machines providing Application, Web, and Database Server use and functionality. Docker takes that a step further. It simplifies your deployment and configuration because let’s face it—who cares? Who cares what flavor of Linux AWS or Rackspace or our very own NTT Cloud uses (Red Hat, by the way)?
Enterprises are reluctant to use Open Source technologies, but they should be very well aware that many of the services they do use (VMware, AWS, Jenkins, and other DevOps solutions) bring with it Docker.
Containerization has only more uses we can conceive. Beyond Windows or Linux servers, imagine mobile devices (Android, iOS) allowing your application to function, as expected, and allow your developers to be vendor- or framework-independent. Imagine wearable technology, or sensor technology employing containerization to facilitate software or firmware development. We are in the Digital era of the Internet of Things (IoT) and it’s becoming the Internet of Everything (IoE). Container abstraction just makes it easier to take advantage and spend your time effectively and efficiently by making software for those things.
- CJ Kadakia, Director, Cloud Advisory Services – Senior Applications Strategist
Post Date: 12/14/2015