This site runs all its components in docker :)
One pretty big distinction - docker containers are not VMs. VMs have a fairly strong overhead and are frequently independent of one another if they exist on the same device (many cloud infrastructure services split a beefy server like slices of a pie into smaller VMs). Docker containers run within a system using what are called control groups (or cgroups for short). There is a shared access to resources at the kernel level, but complete separation of the user space beyond that. That's what enables the level of encapsulation while also being lighter-weight than VMs.
Another way to think about this:
VMs are like houses. They get all of their own plumbing from the street, their own garbage cans, their own natural gas lines. All of that has to be built up for them, but as a house their a fairly self-contained unit.
Containers are like apartments. They share a lot of the plumbing, often have shared garbage, and shared natural gas resources. It's the duty of the apartment building owner (the computer running the docker service) to maintain the infrastructure, but each of the containers can do whatever they want in their own apartment.
Also, since you're using it for a project, here's some helpful tips from the docker team: blog.docker.com/2019/07/intro-guide-to-dockerfile-best-practices/
Edit: Here's a great explanation on containers vs. VMs - stackoverflow.com/a/16048358