Now that we've ran a Docker container and explored some of the components behind Docker, it'll be easier to visualize why developers want to use a tool like Docker. Some of the big benefits are:
When developing applications, we ideally want our environments to be consistent when it comes to the tools needed to run an application. After all, nobody likes it when an application works perfectly on one developer's machine, but then fails on a teammate's machine. Or even worse, fails in production.
Docker helps provide that consistency by creating containers in a repeatable manner. We've seen Docker containers being created from images. These images define how a container should be instantiated and run. As long as we're using the same image, we can create as many containers as we want on different machines, all packaged with the tools needed to run the application.
Docker provides a robust toolset to help increase developer productivity.
All of the benefits above tie nicely into application deployment. Because Docker containers are replicable, consistent, and self-contained, deployment can often be plugged into an automated pipeline. We'll talk more about this when deploying a Docker container.
TL;DR: Docker can save developers a lot of time and effort because applications can be created in a replicable manner. Docker also provides benefits like robust tooling and an active community of developers.