Bridging the Gap Between VMs and Containers