This document discusses containers and microservices. It begins by comparing VMs to containers, noting that containers provide operating-system-level virtualization while VMs require a whole operating system. It then discusses how modern applications are decomposed into independent microservices that can be developed, tested and deployed independently. Containers allow each microservice to run isolated in its own container. The document concludes that containers may ultimately replace VMs for many workloads, as containers provide the necessary isolation and packaging for microservices without the overhead of full virtual machines.