Docker – The Leading Software Container Platform
Docker is a tool designed to make it easier to create, deploy, and run applications by using Containers. Docker container is a lightweight, stand-alone, executable package – a piece of software that includes everything needed to run it.
In order to understand why Docker is needed, first you should know how Docker got evolved. Let’s look at the evolution.
What is Docker Container? – It’s Evolution and Rise
Initially, there used to be hardware servers for each kind of application/software. For database, there is one specific machine with its specific OS and required software. For application, there used to be a separate hardware machine with its software etc. For example, Java applications will be running on Linux OS, SQL Server running on Windows OS, etc. Whenever an application needs to be deployed to Production, the required hardware machines need to be procured and all the necessary installations and set-up done. The initial cost and the maintenance cost of the hardware tend to be very high.
In order to overcome the limitations of the individual hardware, the concept of virtual machines came into picture. In this case, there will be a hardware server, on which a hypervisor will be running and on the hypervisor, there will be multiple virtual machines. The total capacity of all the virtual machines will be equal to the total capacity of the hardware. This way with a single hardware, multiple machines can be created. One virtual machine can have a Linux Operating System, another VM can have a Windows Operating System and so on. However, each Virtual Machine had the entire Operating System installation and required software set-up and installation. For running a Tomcat server, an entire Windows Operating System needs to be installed. And most of the features will not be used and only the Tomcat alone would be utilized.
How does Docker Work? – Benefiting both Developers and System Administrators
The thought occurred as to why one needs to install the entire OS for running just Tomcat. Instead, you can just install the required libraries and OS components needed for running the Tomcat server. That’s how Docker came into the picture. Each Docker container would have the minimum required OS components, libraries, and binaries required for running the application. This way Docker Containers proved to be very lightweight and fast.
With Docker in place, you have a single machine, in which the Docker engine is installed and on top of that each application/component will be running as Docker containers. As Containers are lightweight, multiple Containers can run in a normal desktop machine itself.
The Rapid Rate of Docker Adoption – Popularity of Docker
One of the main reasons for the quick and widespread adoption of Docker is the portability feature. Typically, each environment in the application life cycle will have different specs and there will be challenges in deploying these in varying environments.
For instance, the development will be done in developers’ desktop machines which are running on Windows 10. Once it is moved to QA, it will be running in Windows Server 2016 and the production will have multiple Windows Server machines in a clustered manner. Each time the environment changes, there can be environment-related issues which will uncover during deployment.
With the advent of Docker Containers, once an application is containerized into a Docker container, the same Container will be deployed in a different environment. As the Container doesn’t change, the application will be running identical in all environments.
Why Use Docker – Docker Usage Keeps Booming
The same challenge which exists in the software industry was there in the shipping industry as well during the 80’s and 90’s. There will be different types of goods to be transported and there are varying modes of transport. Each item/product will have its own kind of packaging and a particular mode of transport. When the goods need to be carried in multiple modes of transport, there used to be a lot of confusion and delay due to the packaging differences. In order to overcome the limitations, the 20 feet containers were invented. All transport modes like truck, train, ship were equipped to transport standard 20 feet containers. Hence, the shipper who wanted to transport goods packaged everything into a 20 feet container and once packaged, it would be carried in any mode of transport. Similarly, in the software industry, whatever application is to be deployed can be dockerized into a Docker Container and deployed in any OS / machine running Docker.
These are the main components in Docker:
- Docker Client – Where the command is issued from the client
- Docker Host – Has a Docker daemon and takes off the containers and images.
- Docker Registry – Serves as a repository for images.
The Main Stages of Docker
- Build Docker image – a Dockerfile is used to create a Docker image
- Run Docker image in a local environment – using Docker run command
- Push Docker image to a repository – once ready to be released to larger environments, push to Docker registry
- Pull Docker image from required env – From production / QA environments pull the image from registry and run according to the need.
Limitations of Docker
Whatever data is created inside a Docker container, it will be lost when the Container gets terminated/crashed. Hence, appropriate actions need to be taken to save data to secure locations from a Container. One example is to use volume mounts wherein the host directory is mounted to a Container and the data will be available securely in the host machine, even if the container gets crashed.
Docker Use Case – The Essential Nature
The client, one of the biggest banking and financial services companies in India, used to have separate instances for each partner. When a new partner needs to be on-boarded, a separate instance had to be set up and all the installation would have to be done. As multiple technologies like Tomcat, RabbitMQ, Flink, Solr etc. are used, the installation and set-up was a time consuming task.
All the components were moved to Docker containers. For partner instance creation, just the containers were required to be pulled from the repository and the application could be started immediately. The deployment time got reduced drastically and upgrading to higher version of each component could be done seamlessly by pulling a latest base image and deploying the application.
The Popularity and the Future of Docker
Docker containers run as isolated processes regardless of the host operating system. Docker can proudly claim that its containers can run on any computer, on any infrastructure, and in any cloud. The portability, flexibility, and simplicity is a key reason why Docker is able to generate strong momentum. Docker and containers provide the developers the freedom they desire for, as well as ways to build business apps that respond quickly to changing business conditions. It is evident that Docker will continue to grow and gain greater importance.
Technical Architect, RapidValue