Docker makes use of operating system level virtualization through it's software as a service and platform as a service products. Developed by Docker Inc., the docker platform makes it easy to create, run, and deploy applications in docker containers. Containers can be built with all of the dependencies, libraries and other artifacts that your application needs to run. Once built and tested your container can be deployed with the docker engine. Each running docker container has it's own process id which can be used to create, run, start, pause, and stop the specified container.
Containers and virtual machines have many benefits and although the two have similarities, they also have significant differences as well. Both Containers and Virtual Machines use virtualization. Virtual Machines have multiple guest OSs each with their own libraries and applications stacked on top of a host OS and hypervisor. In this way each application runs on it's own copy of the guest OS. Containers on the other hand provide an isolated environment for each application without needing a separate OS.
Docker Engine is the glue that makes docker work. Docker engine has a client server architecture that is composed of three major components: A daemon process that resides on the server. A REST API that establishes the interfaces that external software can use to talk to the daemon and a docker command line interface.
Docker has an interesting history and is well suited to make deploying applications to the server a painless process. Although many applications can benefit from docker, it looks like micro services have the most to gain by being run in a container environment. docker is worth looking into and it's definitely a great resource for the DevOps community.