Docker allows developers to package applications and dependencies into standardized units called containers. This ensures applications will run the same regardless of environment. Docker addresses issues developers face around long development cycles, bugs between environments, and inconsistent environments. It provides lightweight virtualization that builds, ships and runs distributed applications. Docker improves the software development process by allowing consistent environments for development, testing and production which speeds delivery and reduces bugs.