Docker containers in programming are reusable environments. Basically instead of manually setting up an operating system environment from scratch - you give your program this extra layer where you specify each and every thing that will be on the environment.
If your program was always tested on windows 10 instead of windows 9 - you basically have a way to guarantee it always has windows 10. If your program always used x version of Linux a boom, guaranteed. It adds some complexity but reduces and removes randomness from the concept of deploying applications you’ve created.
Just a plain tailor. Plain. Simple. Garak.