Lately in my web development career, I have been hearing a lot about docker and how a lot of companies are wanting software engineers to explore and learn more about it. So I decided to do some research on my own, and see what is all the craziness and hype behind Docker.
Docker is a tool that is designed to make it easier to create, deploy, and run applications by using containers. So what purpose does the container serve? Well containers allow a developer to package up an application with all of the necessary parts such as libraries and other dependencies and ship it all out as one package. Using containers, allow developers to have a peace of mind that an application will run on any other Linux machine despite any customized settings that machine might have that could possibly differ from the machine that was used for writing and testing the code. Now doesn’t this sound pretty cool?! I mean who wouldn’t love this, having a peace of mind means having more time to get creative and solve more world problems one bug at a time!
One can presume, that Docker is a bit like a virtual machine. However, unlike a virtual machine, instead of creating a whole virtual operating system, Docker allows applications to use the same Linux kernel as the system that they’re running on and only requires be shipped with things not already running on the host computer. WOW! I don’t think I see any cons to this! Therefore, a huge advantage to this is that it gives a significant performance boost and reduces the size of the application. And if you thought all that was great, well it gets better! Docker is open source!!! This means that anyone can contribute to Docker and extend it to meet their own needs like if they need additional features that aren’t available out of the box. IMPRESSIVE MUCH?! I think so!
So who can benefit from using Docker? Well Docker is a tool that is designed to benefit both developers and administrators, making it an essential part of many DevOps toolchains. For developers, it means they can ultimately focus on writing code without having to worry abut the system that it will be running on. In addition, it allows developers to get a heard start by using one of thousands of programs already designed run in a Docker container as part of their application. From a operations staff’s point of view, Docker allows flexibility and potentially reduced the number of systems needed because of its small footprint and lower overhead.
In regards to security, Docker does bring security to applications running in a shared environment, however containers by themselves are not an alternative to taking proper security measures. I believe this is one disadvantage to Docker, and what us developers should aim to improve on.