Docker is a tool that allows wrapping a system and it's dependencies, in all levels, inside a highly portable container. For development, Docker helps multiple teams have access to the same environment. That includes the Linux distribution, system packages, servers and databases. For the production environment, Docker allows having the project run the exact same way it did on the development machine, no matter where it gets deployed, with the same dependencies and packages. That means that "there" it will run the same as "here", saving lots of time and reducing failures.