Docker est un logiciel open-source (sous licence Apache 2.0) et un service en ligne optionnel (Docker.io) permettant de gérer des conteneurs ("dockers").
Contrairement aux machines virtuelles classiques qui comprennent un système hôte ("guest OS") et les librairies/applications, les conteneurs ne contiennent, au maximum, que les applications/librairies.
Quand je dis au maximum c'est qu'une copie d'un conteneur qui ne change que la partie application ne contiendra que les différences par rapport au conteneur initial.
Le système hôte est ainsi géré directement par le Docker Engine (en vert dans le premier schéma). On a ainsi une mutualisation qui permet de lancer les conteneurs de manière très rapide: le temps de lancement d'un conteneur est presque le même que le temps de lancement des applications qu'il contient. En effet, le système d'exploitation est déj´ lancé. Donc pas de phase de démarrage ni d'initialisation de cette couche. Il faut quand même avoir ´ l'esprit que même si l'on est pas dans une machine virtuelle, on dispose tout de même d'un environnement isolé (processus, système de fichier, ports réseau). L'utilisateur n'a qu'´ se préoccuper que de ce qu'il veut virtualiser (les applications/services) et ne s'occupe pas du reste.
L'autre gros avantage de cette technologie est la portabilité. En effet, il est tout ´ fait possible de concevoir un conteneur sur son PC portable puis ensuite de le déployer sur son infrastructure de production physique ou virtuelle. La taille des conteneurs étant relativement réduite, on peut donc imaginer un workflow de déploiement basée sur un repo central (type Git) et des Docker Engine installés sur les machines qui font elle même tourner des conteneurs. Il n'y a pas vraiment de limite au nombre de conteneurs qu'une machine puisse faire tourner. La limite vient de l'occupation mémoire/CPU/réseau de vos applications.
Si vous avez encore des questions sur la différence entre Docker et VM, je vous conseille la lecture de cette question sur StackOverflow: "How is Docker.io different from a normal virtual-machine ?".
Installation de Docker
Source : http://blog.nicolargo.com/2014/06/virtualisation-legere-docker.html