This text has been translated from Google Translate.
Did you know that the creator of Docker was French? Solomon Hykes even studied at Epitech, he joined the Pantheon of successful entrepreneurs from the training that breaks the codes.
Ultimately, our goal is to build the “button” that enables any code to instantly and consistently run on any server anywhere. - Solomon Hykes on Docker Blog
Docker is above all an all-in-one system for making application containers. To put it simply, before Docker, PHP developers had to install the entire environment on their computer, with a MySQL server, an Apache server, etc. And all the applications shared the same environment. For example, in the database, they would have had the tables for each application on the same server. In short, there are quickly side effects. And if we want to mount a version on an application, we mount it on all the applications.
With Docker, they have a well-isolated environment from the rest. In a few clicks this environment is provided with a MySQL server and an Apache server and the developer can test his code. When he changes application, he launches another container which will have its own database, everything is well isolated.
And then Docker comes with a system of DockerFile which allows to describe what the system will install as a dependency. It really simplifies the work and you no longer need to be a UNIX expert to install everything. That's why we sometimes say that Docker is the PHP of sysAdmin. That's because on Sunday everyone can use Docker to do things that used to take 3 engineers.
What is practical is that a Docker image that works on the Dev's machine can be sent to the Cloud easily. So there are still plenty of tools like Docker Swarm (or Kubernetes).
Above all, Docker popularized the use of containers. An application container makes it possible to isolate an application so that it is on the same server as another. This makes it easy to share resources, CPU and memory. Moreover Docker relies on LXC to do this resource sharing.
In truth most of the time we will avoid doing that. Ops will find a way to take over the app and deploy it without Docker for lots of practical reasons. But Docker remains indispensable in the environment of a web developer today.
If you have never used or heard of Docker I recommend two videos on Youtube: