Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and deploy it as one package. This allows them to be lightweight and occupy fewer hardware resources. This is almost virtualizing the operating system, allowing a container to run a small application with it its libraries and dependencies without running an entire virtual machine just for that service. You can run more different types of containers with different lightweight applications. In Docker Engine, each image becomes a container.