Server virtualization reproduces an entire computer in hardware, which then runs an entire OS. The OS runs one application. That’s more efficient than no virtualization at all, but it still duplicates unnecessary code and services for each application you want to run.
Containers take an alternative approach. They share an underlying OS kernel, only running the application and the things it depends on, like software libraries and environment variables. This makes containers smaller and faster to deploy.
Virtual Machines | Containers |
---|---|
Represents hardware-level virtualization | Represents operating system virtualization |
Heavy Weight | Light Weight |
Slow provisioning | Real time provisioning and scalability |
Limited performance | Native performance |
Fully isolated and hence more secure | Process-level isolation and hence less secure |
In the following video, Sai Vennam breaks down the basics of containerization and how it compares to virtualization via VMs (8:08):