Docker allows for the use of lightweight containers that share the host operating system kernel. Containers isolate applications from one another and provide a way to package applications with their dependencies. Containers use resource isolation features and union file systems for efficiency. Docker images are built from layers and can be distributed. The Docker ecosystem includes tools for the container lifecycle, networking, storage, and distribution of images.