Hello!! Welcome to the docker tutorial. Here we are going to see what is docker and as always we are going to a very basic step by step.
Let's get started…
What is Docker?
Can you remember how many times have you faced this issue that code works for the developer system but the same code does not work for the testing environment? Docker at a very basic level resolves this issue of an application working on one platform and not working for another platform. However, there is much more to Docker.
Before we enter the question What Docker is? Let us understand where does Docker comes to picture.
These are the stages of a Software Life Cycle. And Docker comes at the Deployment stage.
Docker makes the process of application development very easy and efficient and resolves a lot of issues related to deploying applications.
So this is the brief of Docker and Docker is the world’s leading software container platform. What does this mean?
Let us understand this in a slightly different way. Today when we talk about software it is not just a single piece of code. However, there is an entire software stack. A typical software Application consists of a group of Frontend components, Backend Components, Databases, Servers, Libraries, and other Environment dependent components. And we also have to ensure that all these components work on a different and a wide range of platforms.
So if we look at the picture it becomes very complex to ensure that each of the software components works on every possible platform where the application is willing to run. If I make a matrix out of this, this is how it looks like and we have to ensure that every software component is compatible with every possible hardware where the applicants intend to run.
It is not uncommon to find in a lot of organizations today that developers spent a lot more time to ensure that the software works on every possible platform.
Now how to solve this problem. Before solving this problem let us look at a similar problem that existing in many many years ago in the shipping industry.
And that was How to transport different goods having different sizes, shapes, and requirements for different locations in the world.
Let's imagine you are a furniture manufacturer and while transporting your furniture you have to take care of a lot of things.
- What kind of trucks have to be used.
- How should you do the packaging?
- You need expert staff.
- The medium of shipping.
This is true for every possible unique good. So for an example of car manufacture, let's think about his requirements in the same way.
We have different kinds of items such as some are big, small, hard, fragile, solid, liquid, son shape. So you can think of all the possible ways of shipping different kinds of goods in the shipping industry. Then again the situation becomes very complex. And we are again got the same matrix looks like in the above. So how to solve the problem?
We can use containers to solve the problem. So containers are standard boxes where the goods can be packed in a standard way. So for example, if you are a furniture manufacturer the only thing you have to focus on is creating your furniture and packaging them in one of these standard containers. You do not have to worry about whether this will be shipped through the air or through the water. You do not have to worry about the expertise of the staff because now we have a standard way.
So we can ship goods using containers very easily, efficiently and very cheaply. If you look around your self you will find that most of the items shipping through this kind of thing.
Let us come back to our problem. The solution is to use containers with a standard way. And here comes Docker.
So Docker is a tool design to make it easier to deploy and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
So now you can imagine developer will package all the software and its component into a box which we call container and Docker will take care of shipping this container to all the possible platforms in a standard way and this is how we can solve the issue of an application working on one environment or a platform and not working on another platform.
Now the developer will now only focus on creating the code and the software. And the package the software along with all it’s dependencies into a container and will not worry about how this will be deployed or what platforms have to used and so on.
Then Docker makes this process of deploying software very easy, very efficient and very cheap.