Docker is the vanguard of a new generation of tools based on the concept of containerization. A container is much like a virtual machine, except instead of using bulky and expensive hardware emulation, the host operating system runs contained software in an isolated environment. The important isolation benefits of running software in a virtual machine are retained without the bootup delay or overhead of running a nested operating system. This makes Docker a vastly more efficient replacement for many uses of virtualization tools such as Vagrant.
The real advantage of Docker is that it is now practical to run the entire cycle of development, testing, and production tasks in containers based on the same system image. The description of a system image can be bundled with the application code and runs the same everywhere, from laptops and desktops to rack servers and cloud instances. Even hardware-accelerated desktop applications like Google Earth and Chrome can be run in containers with no perceived overhead.