Any person that come across the containers world for first time, wonders What's the point of using Docker on top of a virtual machine?.. I'm sure I was not alone in this.
While this can be a simple to answer, As everyone point, containers simply run inside VM's as currently happens on most cloud providers to ensure isolation of applications. But well known the fact is, moving to the containers doesn't simply provide the security that VM does. Thats the reason container runs on top of Virtual Machine to take advantage of established and verified security provided by hypervisors.
And yes, the improved container security and isolation on Linux has taken to the point that one can use bare metal container services without using VMs for isolation. Good example for such case is IBM's Bluemix cloud service. Bluemix has built a managed container service on the public Bluemix cloud service that runs without VM isolation between applications.
The companies like VMWare, Intel, Hyper.. are working on building lighting-fast VM-based frameworks that implement the Docker API in an attempt to gain the speed of container-based workflow and hypervisor security.
Yet, to retain the agility advantage of containers, multi containers are run within each VM and also the organizations which are more concerned about security may use VM to separate containers running at different security levels. For instance, banking sectors, containers processing customer accounts and payment information may be scheduled on separate nodes to those reserved for user-facing websites.