I would prefer a Docker. Main reason which I prefer Docker is that you can have multiple apps with different environments running in the same machine.
Eg: If you 2 apps - one which requires Node1 and the next which requires Node 4, then with only PM2, you will not be able to deploy both on the same server. Dockers help you in that. There can be 2 dockers having different versions of Node and still running on the same machine.