Unlike a Virtual Machine which provides hardware utilization, containers are a method of packaging an application so it can run on an isolated virtual environment, independent of the operating system. Containers are given their own user space, and multiple containers can be ran on the same machine.
In addition, it simplifies the development process, acting as a single platform for development and production. The container used during the development process is the same container that will be used during the deployment; therefore, all libraries and packages are already installed and ready to run in production. The size of the container is generally much smaller than the virtual machine.