Initially, Docker was built on top of
Linux Containers (LXC) and provided a very lightweight container to build and develop applications. In its recent version, Docker has replaced LXC with its own built-in library (
libcontainer). You can still use Docker with LXC instead of
libcontainer. It can be tested on a laptop and is scalable on VMs, OpenStack clusters, server instances, or on all of these. The main concept of Docker is to develop it once and run it anywhere. Docker has tooling to make it very easy to distribute and deploy containers. We have had virtualization technology for a long time, but before that, you had to create multiple types of images because every vendor had their own image format, and there weren't tools or central repositories to make it easy to transfer copies of images.
Currently, Docker is in development...