Docker is a virtualization tool that allows users to package applications into standardized units called containers that can run on any Linux server. Key features of Docker include using immutable container images, treating infrastructure as code, and copy-on-write for efficient resource utilization. Docker provides both a command line interface for controlling containers as well as tools like Docker Hub for sharing pre-built application containers and Docker Compose for defining multi-container applications.