When I was told to write about the software technology – Docker, I had two options. I could give you a concise explanation comprising of a technical definition, its functions, some statistics and its benefits. Or I could adopt an expository style of writing to demonstrate what it does, why there was a need for Docker and how it has helped solve a lot of problems. Like Robert Frost, when two roads diverge in a wood, I take the one less travelled by and hence, here begins my hermeneutic discourse.
Take a back seat and visualize!
Much to your dismay, your lease has expired and your landlord has asked you to vacate your room immediately since the place has been assigned to a new guest. Unprepared for the move, you try to negotiate and delay the process by a day or two. However, the landlord has his reservations as he is unaware of the exact time the new guest would check in. He tells you to leave immediately and take away as many belongings with you as possible; the rest can be stored in a cabinet and dealt with later.
In a jiffy, you pull out your largest suitcase, rummage through your drawers, cram as many belongings as possible and book a cab to your friend’s place. However, when the cab arrives, you notice that its boot is not large enough for your suitcase. Like a bear with a sore head, you try to balance the suitcase on the backseat but worry if something will break or leak due to instability. The cab driver, on the other hand, wishes he had a car with a bigger trunk so that situations like these would not arise.
Now, imagine if the dimensions and all other properties of such suitcases were fixed. All you’d have to worry about is what to put in the suitcase and what to leave out. Naturally, the cab too would have a boot of sufficient size since it has to be capacious enough for all passengers. You would not have to be anxious about how to stow the bag in the car. Is it kept in the right orientation? Is the trunk big enough? Will the suitcase be alright? These would not be your concerns since these will be taken care of by the cab driver already. Similarly, the driver would not have to bother about what’s in the bag or if the trunk is big enough because that is a prerequisite in itself.
So, why is this story relevant?
This forms the foundation of Docker. When developers design some software, often they need to ship it to another system and try to ensure that it behaves in a similar manner – much like your belongings that need to be transferred from one place to another without being hampered. This is done with the help of containerization, a process which is analogous to the standardization of a suitcase. Containers allow the developer to package the application with all the components needed to run it such as the code, runtime, system libraries and other dependencies. They provide a kind of protection or in other words, ensure that the application always runs in a particular fashion, irrespective of the environment.
So, Docker provides developers with the luxury of being able to write code without fretting about what machine it will finally run on or how it will be deployed since it will eventually be containerized (similar to you not having to worry about whether your belongings will be safe or not since they will eventually go in a suitcase that can sit comfortably in the trunk of any cab). On the same lines, the operations team can perform any function with that container without bothering about what it is built of just like your cab driver, who can handle any suitcase in the world since he has the right infrastructure to deal with it.
With applications becoming more and more complex each day, such a tool was called-for and this explains why the release of Docker generated a huge buzz. Developed by the company Docker, Inc., this open-source project is functional for both Linux and Windows based apps.
Docker VS Virtual Machines
People often draw parallels between Docker and a virtual machine (VM). The latter emulates an entire computer system while the former concerns itself with just the operating system. Unlike VMs that are extremely bulky and slow to boot, Docker is an extremely efficient, lightweight and portable technology designed to not get in the way.
Thus, it has an upper hand and this can be exemplified as follows. To ship some belongings from one city to another, it is always easier to use a suitcase rather than transporting your entire room, primarily for two reasons. One, your room will have other items that might not be of high utility to you at that moment. Two, it is not exactly easy to haul an entire room, is it? Similarly, developers want the entire application but do not want to package all processors, network interface and hard drive along with it as it would make shipping much more inconvenient. (Of course, this would not be a problem for Lord Hanuman because he was fine with lifting the entire Dronagiri mountain from the Himalayas to Lanka for one magical herb, Sanjeevani.)
Let’s talk numbers..
451 research predicts that the container technology will turn from a $495 million market (2015 statistics) to a whopping $2.7 billion market by 2020. Docker, in itself, has been downloaded more than 13 billion times between its initial launch in 2013 and 2017. So, look out fellas! Because we might just be in the midst of a container revolution set forth by this portable container engine. It seems pretty harmless with its cute whale logo but has the potential to take the cloud computing world by storm!