Docker is an open source container technology that became immensely popular in 2014. Docker itself is written in Google’s programming language Go and supported on all major Linux distributions (RedHat, CentOS, Oracle Linux, Ubuntu etc.). The technical underpinnings are not completely new, Docker leverages Linux kernel features for containers such as cgroups and namespaces. So even though Docker itself is relatively new, the underlying container technology is an established technology.
It is reported that Google starts 2 000 000 000 every week for search, mail, etc.
It’s important to distinguish Linux containers and Docker from traditional and more common type 1 or type 2 hypervisors. Type 1 hypervisors provide server virtualization on bare metal hardware, whereas Type 2 hypervisors typically provide desktop virtualization based on an existing operating system as shown below.
In contrast to popular virtualization technologies, Docker containers run the host’s Linux kernel. Docker is about isolation, not about virtualization. The required time to startup a container is only in the range of milliseconds. Still containers have their own incremental files system, where layers are reused across containers. In addition, every container has its own network stack, therefore its own IP-address, and its own process space.