Local dev/test environment for macOS to run two networked O/Ses; one CentOS and the other Windows?
Solution 1:
https://www.parallels.com/ (commercial) is a good way to run Windows desktops on the Mac. Everything else I've seen so far is a bit painful to use. In particular getting legal Windows images that are not limited in some way doesn't seem to be easy.
If you are running Parallels anyway, having another CentOS VM in it (and not in VMware/vSphere) is the obvious next move.
Running Docker in a Linux VM (because that's what you need on the Mac, and that's what all Docker flavours on the Mac do in one or other) and then running the CentOS inside Docker seems unnecessarily complicated, in particular if you are not using Docker images in the first place.
Vagrant is more for scripting some kind of VM setup. It doesn't solve the problem that first you have to pick some good way to run Windows VMs on your Mac. So that's the choice everything else depends on.
If your primary goal is to script it, in particular to version control how you set up the virtual images, because you don't want to set up a particular image and then update your software on it, but you want to build it from scratch each time, or at least repeat that process when necessary, then yes, vagrant looks like a good solution for that.
Yes, a single Vagrantfile can describe multiple machines.
I have not used Vagrant with Windows, but the docs says it access windows over WinRM, so I'd assume any VM system with network set up in the base image would do.
If you want to also script starting up the system with multiple VMs, then Parallels Enterprise comes with a CLI, but I have not used that.
Alternatively, virtualbox should be easily scriptable, and is free, but then you need some source of unlocked Windows base images. Maybe someone else has an idea how to get those (I'd be interested in those, too).
I have not looked into scripting on VMware, possibly it works there, too.