Docker provides lightweight virtualization that allows multiple isolated Linux systems running on the same host. Unlike traditional virtualization, which virtualizes the hardware, containers virtualize the operating system. Multiple running containers that share the same host also share the same host operating system. As such, containers have a lightweight footprint, a minimal overhead, and can enable rapid application deployment. Docker provides a runtime environment for containers, an API for container management, and a registry format for container sharing. This allows users to easily deploy, update, and move workloads. Since then, Docker has become the de facto choice for those building cloud and microservice applications.