Docker

Docker is a runtime environment able to pack an application and its dependencies in an isolated container, which may then be deployed and executed on any server running a docker host.

A container manager is not a virtualized environment. A container is an instance of an image where an image defines a lightweight package containing all what is necessary to run a piece of software. Containers run applications on top of the native kernel of the host machine, and that gives them better performances than virtual machines which need a virtual access to resources with an hypervisor.
Indeed, a virtual machine executes a host operating system as well as deployed applications, which is very resource consuming:

If images and containers make life easier for application deployment, operations may become very teddious, especially with cloud environments and distributed applications. One use then an orchestrator such as Docker Swarm or Kubernetes, that are able to manage container life cycles in a cluster. This makes deployments easier but also the operational maintenance of services and applications defined around containers.