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)

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)

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)

What's Docker?