Docker is much easier than it seems, imagine a single app with all it’s dependencies all the way down to the os level being all wrapped up in a virtual filesystem so it can’t see anything else. Only the kernel is shared.
So if “Awesome Webapp Jeroboam” needs a different version of python than you have installed and and old version of ffmpeg for some utility it needs, along with the apache webserver where you prefer nginx, no problem, all that mess gets wrappped up in a container and you don’t have to worry about it.
Docker-compose is a orchestration tool that wraps around the inbuilt docker functions that are exposed like “docker run”, when teaching people a tool you generally explain the base functions of the tool and then explain wrappers around that tool in terms of the functions you’ve already learned.
Similarly when you have a standalone container you generally provide the information to get the container running in terms of base docker, not an orchestration tool… unless the container must be used alongside other containers, then orchestration config is often provided.