Why Docker?
Before I talk about Docker, let me give you a common problem in software development that developers used to have.
Say a developer just finished building and testing a new feature. It works fine on their machine. But when the same code reaches production, the system suddenly crashes. One of the most common reasons is that the development and production environments are different from each other.
Before Docker, developers would use a virtual machine to create an environment that matched the production server. The problem is that this wastes resources: you cannot make good use of your disk space, memory, and processing power.
Docker takes a different approach. It installs directly onto the machine, and developers can run multiple containers, each responsible for its own service. You do not have to pre-allocate resources to a container; it uses what the application needs, when it needs it.
With that kind of setup, your codebase and all of its tooling run the same way on any environment.
So if you are starting a new project, I would recommend using Docker. It removes the environment problem before it ever becomes one.
