Virtual environments, Docker containers, & Virtual Machines represent increasing levels of abstraction and control.
By analogy, you can compare virtual environments to project folders, Docker images to file systems, and virtual machines as everything but the hardware.
Virtual environments are used to isolate Python project dependencies, Docker containers are used to isolate applications and their required binaries and libraries, & Virtual Machines are for managing multiple guest operating systems. These technologies aren’t mutually exclusive and can be used in tandem.
I think it can be used as inspiration for our module. I'll at least add it to the further reading section.
Describing various concepts regarding dependency management and isolation of the software environment: