Docker is a deployment platform that uses containers to package applications and their dependencies to run seamlessly on any infrastructure. It allows developers to package code into standardized units for development, shipping and running. Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries and settings. This guarantees the software will always run the same regardless of its environment. Docker containers are lightweight and contain only what is needed for the app platform - without unnecessary operating system packages. This makes them portable and efficient.