This document provides an introduction and overview of unikernels. It defines unikernels as specialized machine images constructed from modular operating system libraries that are compiled with an application and configuration code. This results in sealed, fixed-purpose images that can run directly on hardware without an intervening full operating system. The document contrasts the traditional application stack with layers between the application and hardware to the unikernel approach, which aims to remove these layers and provide a single address space for improved performance. It notes challenges in running multiple applications but how virtualization can provide hardware compatibility while unikernels implement drivers for virtual hardware.