1999 Virtuozzo Containers released
2005 Open Source version: OpenVZ
2006 Process Containers (CGroups)
2008 LXC version 0.1.0 released
2011 Kernel Container API
Container evangelist
Open Source Advocate
Kernel Developer
Hypervisors are based on emulating hardware
Containers are about virtualizing the Operating System subsystems
Containers: Single Kernel; Hypervisors: multiple kernels.
Immediate Advantage: single kernel update, all guests benefit
Other container advantages: elasticity
↑
|
|
|
Gigabytes
|
|
|
↓
↑
Megabytes
↓
Just the lightness of containers makes them far more dense and elastic
But there's more: containers can be scaled instantly up or down (instant vertical scaling)
Sharing the same kernel makes container resource decisions much more efficiently than hypervisors
Kernel API is the same for all systems
Came from an Agreement at the Kernel Summit in 2011
Parallels (now Odin) organised all container interests to converge on a unified, upstream API
Led directly to the ability of Docker to run on upstream containers
Block I/O
CPU
Devices
Memory
Network
Freezer
Network NS
IPC NS
Mount NS
PID NS
UTS NS
User NS
To match hypervisors, also need migration
Enter
Checkpoint/Restore In Userspace
http://www.criu.org
Reduces a group of processes to a debug information representation
Information can be used to reconstruct processes anywhere
including on any kernel version
Used as the basis for container migration in every Linux system