Docker is an open platform for developing, shipping, and running applications. It enables separating applications from infrastructure so software can be delivered quickly. Docker uses features of the Linux kernel like namespaces and cgroups to deliver functionality. Containers are more lightweight than virtual machines, using less disk space and starting faster, while still providing isolation. Docker uses images and repositories to package and distribute applications. The Dockerfile defines how to build images from a base image and run commands.