Do you really need a full-fledged VM for every 6 player game session? This is going to generate a lot of overhead. It might be far more efficient to run multiple server processes on the same virtual server and even more efficient to let your game server software handle multiple games in parallel in one process.
You are saving the overhead of running ...
TLDR - start simple and build up. Getting to AAA quality networking in an action game is complicated but may not even be necessary for your game.
So basically: When client connects to the server, server creates new entity. Now, for example, when client presses 'A', packet is sent to a server containing this information. Server will proccess it, moves the ...
If the client has a 100ms ping to the server, then there would be a delay of at least 6 extra frames between the user pressing a button, and seeing the result, probably more.
Even adding 1 frame from double-buffered rendering causes perceivable delay.
This means that client/server gaming is a lot more complicated than this, and prediction is involved.
While asking for what technology to use is off-topic here... I can tell you what not to use.
First of all, you want the game instances to be able to work as clients or servers. There will not be an stablished server to which everybody connects. That is, you want a peer-to-peer network architecture. Please note that while we are talking P2P, that does not ...
I recommend synchronizing system timers on all clients and the server by means of NTP [Stratum 2] protocol, then the server sends a command to start the game at specified time, say, when all the timers reach 0:05:00. This approach should give you 3-4 ms accurate synchronization, I believe.