Docker allows applications to be packaged with their dependencies and libraries into standardized units called containers that can run on any infrastructure regardless of the underlying operating system. Containers isolate applications from each other and the underlying host, providing a lightweight and portable way to deploy software that increases efficiency and reduces costs of development, testing, and operations compared to traditional virtual machines. Docker images containing pre-built application containers can be stored in shared public or private repositories like Docker Hub, enabling applications and their dependencies to be easily distributed, updated, and run anywhere.