Preparing the environment for the application
The environment where an application runs always has a big impact on it. It is one of the big causes of the so-common statement, "it works on my machine". Over the years, developers have been creating solutions that try to minimize this as much as possible. These solutions can go from automatically provisioning new clean instances for the application to run, to creating more complete packages where everything the application depends on is included.
We can refer to virtual machines (VMs) or containers as ways to achieve this goal. Both are different solutions to the same problem but have one big thing in common: resource isolation. Both try to isolate an application from the environment around it. There are many reasons for this, from security, to automation, to reliability.
Containers are a modern way of providing a package for an application. Modern software projects use them to provide a single container image that has...