Although traditional VMs provide strong isolation by running general-purpose guest OSes, they often suffer from high performance/storage overhead in terms of large memory consumption, long booting latency, and virtualization cost [
2–
4]. OS virtualization technologies such as containers [
5] allow multiple instances share the same OS kernel as the host. Thus, containers can be more efficient than VMs, but do not provide as good isolation as VMs. Recently, unikernels have emerged as a lightweight way to deploy cloud services. Unikernels are application-specialised, single-address-space machine images constructed by using library operating systems [
2]. The entire software stack of a unikernel includes OS kernel, necessary system libraries, language runtime, and application source code. They are compiled into a lightweight, single-purpose application that can directly run on a standard hypervisor. Unikernels can offer near bare-metal application performance, strong isolation, minimal memory footprint, and extremely low startup latency. Fig.1 shows the architectures of VMs, containers, and unikernels. In general, unikernels can offer VM-like strong isolation, and are even more lightweight and efficient than containers.