Using containers to package and ship applications brings several operational and financial gains, as the infographic below illustrates:
Containers package the environment needed for an application to run. By using containers you ensure consistency between your dev/test/production environments.
This will eliminate the “works on my machine” phenomenon.
Instead of running a dedicated VM for each application you can reduce costs by running multiple containers on the same VM. Containers also improve resource utilization by using less computing resources than VMs.
Once you package your environments/applications in containers you can save them into images which can be stored in public/private registries. This allows you to manage and distribute your packaged environments/applications. Your containers also become versioned because the container setup is version-controlled.
In an agile world velocity is important and spinning containers packaging applications and dependencies can be done in seconds. This saves a lot of time that would otherwise have been spent on setting up environments and fixing problems arising from non-conformities in those environments
Although containers can run on the same host they virtualize the CPU and memory at the OS level giving you sandboxes for your applications.
Almost all types of workloads can be containerized. Whether it is a DB server, website/web application, API service, or a microservice application, it can run in a container. Containers can also run on both Linux and Windows hosts.