There's a small consideration to take into account here, and that's the fact we're running a VM inside a VM, but it highlights a few problems.
Some positives are:
- It has pretty much complete OS segregation (except for some vulnerabilities like Meltdown)
- Good control over resource allocation for the VM
- Ability to tear down and spin up on a whim
- If you need to specifically make hardware changes to account for software requirements, VMs are the only way to do this easily
Some negatives are:
- VMs can be slower than containers, and there's a lot of factors you have to account for (such as if your server is already a VM)
- You're running an entirely separate OS and kernel, for the sake of one program (in this example)
- VMs usually ...