Containers
Containers are a lightweight virtualization system that allows apps to share the same Linux kernel, yet operate in isolated environments. Each container gets its own file system, networking, memory and CPU.
Compared to VMs
Using VMs, you would share the same hardware among multiple OSs (eg, Linux, Windows). Using containers you go one level higher and share the same kernel among multiple distributions (eg, Ubuntu, CentOS). Containers are lightweight and utilize resources better.
Docker
Docker is a container technology, but adds versioning, packaging and distribution. This makes creating and sharing of containers standardized and painless.
Usage
You could use it wherever you would use Linux VMs but you don't care about the isolation being very secure. It's ideal for software development since all developers can get the same exact environment on their dev systems. Like Vagrant, but lightweight.
Further reading: What is Docker