Your guide to the Docker ... What is it? What is its purpose? How and when do you use it?

Your guide to the Docker ... What is it? What is its purpose? How and when do you use it?

The field of programming in general does not only consist of programming languages, but there are other programming techniques that have to keep pace with the programmer and programming languages, especially with an example of this Git technology, it is not a technology that helps you to develop a program if you will, but it is necessary for any programmer in order to Maintain, share and organize his programmatic project files.
Among the other famous technologies is the Docker technology that some people can use, and others may hear about it for the first time, Docker technology is not new, but it is very useful for many programmers in order to develop software with high efficiency regardless of the environment used in developing this software . We will dedicate our article today to talk about Docker technology and its definition to our programmable friends who follow the programming section on our site, and we will explain what it is, and what is the purpose of using the Docker from its basis, then when, where and how to use the Docker.

The basis of the dilemma:
But the program works on my device!
 How many times have you said this phrase when you transfer the project from your device to a work device / server? Or have you heard someone say it while transferring his project to him? The real reason behind operating software projects on this computer and not working on that computer is mainly due to the different resources or packages (Dependencies) that make up the project, whether by not presenting it from its basis or by installing old or newer copies of the resources previously installed in the project The software, if everything is running in your machine and then transferred it to your friend's computer (via the Git for example) or raised it on a server or server, the project may not work properly and this is due to a few reasons, the most important of which is that it does not use those resources and packages in its device And, at the server level, the server may not support it either, if your project is based on Php 7 and server only supports Php 5 Vanma will not work the project.
 We know very well that any relatively large project relies heavily on third-party software, libraries, and external packages that must be added to the software project, and that it differs, damages, or does not install its basics in any platform that leads to the project being completely disrupted or not working efficiently.

What is a Docker?
In order to solve the problem previously, we download a completely fake environment (similar to the imaginary system) and then install it in our own device and we create the project on it, so that all the resources in the project remain in that system and do not conflict with our system that we work on, we develop the project In this placebo system until the end, then when you want to install it, there is no need to copy the project alone, but take the placebo system completely and install it in the final computer, so all the resources will remain ready, running and without problems. In the past, the process was done literally using an imaginary system in the computer, but several problems have also arisen, including the burden of operating the system and the difficulty of dealing with it in the event that the computer resources are weak. Any project in any computer and on any environment, you configure it according to your project, then after completion you can transfer it to any other platform and use it without the need to reinstall external resources or lose the effectiveness of your software project.

Why use Docker?
There are many reasons for using the Docker, but the most important one remains to ensure the compatibility of your software project with the server or server that hosts your project in the end, as it happens sometimes that you are hosting your project on a server that may not support specific technology or support an old version of one of the packages used in the project, leading to Your project is completely disrupted, since the Docker creates its own environment, the compatibility of your project with the server is guaranteed by the Docker.

A deeper look at the Docker?
The principle of the Docker is simple, as it consists of what we call containers or containers, each container is the ideal environment for developing any software project you want, after installing and running your Docker you create a container with specific properties, for example you make a container with the Ubuntu system, then you For example, installing Apache servers, installing php, installing Composer, installing Laravel and all external libraries, resources and credits that you want to use in your software project on that container, then what is called an image or image for that container is created, now all you need To do is to take that image and install it on any server or computer and receive your software project It is without problems and without reinstallation of all of the above mentioned software and external tools.

When can we use the Docker?
Although the Docker has a lot of positives that help you to maintain the balance of your software project, some of the negatives in it make some people dispense with it like the many steps to configure the compatible project (so you will have to download the system, download all the tools and packages externally and then install them ...) And secondly, the large size of the Docker and the containers and systems in it, which makes for example installing the Ubuntu container, for example, taking a long time. Therefore, you can not only use the Docker whenever you want, so whether you use it, you can use the Docker in serious projects with a specific goal that you and your team intend to complete to the last and host them on a server or server, so configuring a container is relatively difficult and requires time and Effort and make an image of it as well and pass it on and export and then re-upload to the server is cumbersome despite the benefits that the Docker brings, try to use it rationally and in firm projects only and not projects learning to print Hello World.