This document provides an overview of Docker for developers. It discusses why Docker is useful for building applications, including portability across machines, isolating dependencies, and creating development environments that match production. Benefits of Docker like lightweight containers, a unified build process with Dockerfiles, standardized images from Docker Hub, and fast container startup times are outlined. Some cons like only working on Linux and added complexity are noted. Using Docker with Vagrant for a portable development environment is presented. Key Docker CLI commands and Docker Compose for defining multi-container apps are covered. Tips for debugging running containers are provided.