What are containers?
"A container is a software package that contains everything the software needs to run. This includes the executable program as well as system tools, libraries, and settings. Second, containers provide added security since the software will not affect the host operating system" (Source)
Why are containers used?
"Containers give developers the ability to create predictable environments that are isolated from other applications. Containers can also include software dependencies needed by the application, such as specific versions of programming language runtimes and other software libraries." (Source)
Why are containers so popular? (Source)
They start and stop much faster than virtual machines.
They are more portable because container host environments are very consistent, no matter which type of operating system is hosting them.
Containerized applications are easy to scale because containers can be added or subtracted quickly from an environment.
Containers make it easy to break complex monolithic applications into smaller, modular microservices.
The Evolution of Virtualization
What is difference between a Virtual Machine (VM) and a container?
"A Virtual Machine (VM) provides an abstract machine that uses device drivers targeting the abstract machine, while a container provides an abstract OS. Applications running in a container environment share an underlying operating system, while VM systems can run different operating systems." (Source)
Virtual Machines are an abstraction of the hardware layer. VMs run on a "Virtual Host/Hypervisor".
Containers are an abstraction of the application layer. Containers run on a "Container Engine"
Why are containers better than VM?
"Shared components are read-only. Containers are thus exceptionally “light”: They are only megabytes in size and take just seconds to start, versus gigabytes and minutes for a VM. Containers also reduce management overhead. In short, containers are lighter weight and more portable than VMs." (Source)
It solves the “Well, it works on my machine!!” problem.