Docker allows building, shipping and running applications as lightweight containers. It provides an isolated runtime environment for applications and their dependencies, allowing developers to easily deploy their code in a consistent manner across different environments. Operations teams also benefit from Docker as it standardizes the application lifecycle and deployment process, improving efficiency, quality and speed of continuous integration and deployment. Docker containers are more lightweight than virtual machines and provide better performance, density and portability.