“Docker Container hmm. That looks more like stuff of Infrastructure Guys or Linux Guys, I am a web developer. Why should i learn it? ” This is the thought which came to my mind when I first looked at Docker Containers in a Developers Conference. I am sure I was not the only web developer who was thinking like this. However, after knowing more about it, I understood that Docker can become one of the powerful learnings in the arsenal of a web developer.
“How?” Lets just see.
“It works on my machine” goes away winning!!
I have seen developers who are really good at coding and finish developing a new feature within few hours. Still, I see them frustrated on the job just because their code doesn’t work on other environments like Testing, Staging and Production. Often they have to spend more time on fixing environmental issues than developing a new feature.
Those days are gone with the arrival of Docker!! Each Docker Container has everything it needs to run its application within itself. This gives our code the ability to behave consistent on any environment because the code is inside the container which completely separates it from the environment. It gives a developer the confidence to say that the code will run same on any environment which has Docker on it. So finally, “It works on my machine” goes away winning.
No More App Conflicts
Upgrading to a new version of framework for our applications is one of the tedious processes. This can be made very simple using Docker Containers. Let say for example you have few applications running on a Framework and you need to upgrade this framework to its newer version. You can create a container with the new version of the framework and connect it with other containers running the application very easily within few minutes. This being one way, you definitely can have many approaches for this process thus eliminating the application conflicts due to version change.
Effective Version Control
Docker allows us to version the docker images we build. In case if you find any issues with the new image version, you can rollback to the previous version of the image very quickly. This makes docker very effective on version control.
Easier and faster deployments
Docker makes the deployment process of an application extremely easy and fast. A simple shell script is enough in order to get the whole application up and running.
It supports decoupling very well
Decoupling components is the key to increase the maintainability of an application. We can create containers for various components of an application and allow these containers to communicate with each other to run the whole application.
For example, In a web application, we can have a container running our database e.g. mongodb, one container for Web API, one container running the Asp.Net Core and one for Nginx. We can run all these containers in a network allowing them to communicate with each other easily and run the whole application. In such cases as each component is decoupled as a container, its easy to swap it with others having different version.
Due to its independent nature Docker Container becomes the obvious choice for microservices based applications.
Docker Containers are the future
These are some of the docker benefits which I understand. I am sure there are many benefits which I might have missed. However, looking at the flexibility in development and the DevOps process which docker offers, it looks very promising that we would be developing most of our applications in docker containers. This is one of the strongest point which makes one feel that it is very important to learn Docker Containers.
So, why wait. Let’s just learn it and get ready for the future app developments with Docker Containers!