Docker enables software developers to package applications and all dependencies so they can run unchanged anywhere. It allows system administrators to simplify application deployment, easily scale resources up or down, and isolate processes. Docker uses Linux technologies like namespaces, control groups, layered filesystems, and LXC to virtualize operating systems and run containers. Users install Docker Engine, use Dockerfiles to build images from which containers are launched, and manage machines with Docker Machine.