“The application runs perfectly in my machine but not YOURS ?”, normally this problem occurs when the application dependencies such as libraries, interpreters, code/binaries are different from one machine to another. This is where docker comes in to solve the problem.
How docker solves the problem
Docker combines all the related dependencies required for the application to run, with the application into a Container. Now this container can also be called a Docker image, this image can be download to another user's machine and able to run the application, no dependency problems will be faced, it will run exactly how it functioned on the developer's machine.
The big downside of Docker
Docker does not apply memory limitations to containers by default. This means that in theory, it is possible for a Docker container to consume the entire host’s memory.