I would like to simulate a server machine and several client machines operating over a vpn. I would like to test the server application as well as the client applications all on one machine.
Would I be able to do this with a few docker applications running on my machine - or should I be using something like systemd-nspawn?
Yes. With linking containers, exposing and publishing[publish ports containers can communicate with each other or with the host machine.