title: Docker relationship to VMs and LXC
body: <p>My <em>understanding</em> of Linux Containers (LXC) is that it provides a native hypervisor for Linux systems, similar to Windows' Hyper-V introduced in Windows 8. By "native hypervisor", I mean, the ability for the Linux system to host guest VMs inside of it without having to install any kind of specialized virtualization software.</p>
  
  <p>My <em>understanding</em> of Docker is that it <em>somehow</em> builds on top of LXC, and allows application developers to define:</p>
  
  <ol>
  <li>The exact app stack of a VM/node, including the OS, the exact configuration and tuning of the OS, and any tools or applications installed/configured/deployed to that OS; and</li>
  <li>The exact resource requirements for running this VM/node, including CPU requirements, memory/disk/network requirements, load balancing and replication requirements, etc. Docker then figures out what nodes to run the container on, using these declared requirements as its baseline.</li>
  </ol>
  
  <p>So first off, if my understanding of LXC or Docker is mislead at all, <strong>please begin by correcting me!</strong></p>
  
  <p>Assuming I'm more or less correct in my understanding, I ask:</p>
  
  <ul>
  <li>What is the relationship between Docker and, say, vmWare or Xen VMs? Does Docker "sit on top" of the virtualization layer? In other words, are there "Docker bindings" for different virtualization platforms (vmWare, Xen, kvm, etc.), and I could take a Docker container for <code>myapp</code> and deploy it to any Docker-ified platform?</li>
  <li>What is the relationship between LXC and Docker? Does Docker simply just extend LXC, or is it a similar (but completely separate) concept altogether? If its an extension of LXC, then in what way?</li>
  </ul>