Docker allows running applications in isolated Linux containers. It packages an application and its dependencies into a virtual container that uses features of the Linux kernel like namespaces and control groups to isolate the container's view of the operating system. Docker images contain the instructions to launch containers from templates called images. Containers are instantiated forms of images that contain the operating system, files, and metadata needed to run the application. Docker uses namespaces to isolate processes, networking, filesystem mounts, and other resources for each container.