What is the foremost advantage (if there is any at all) of isolating/encapsulating a Microservice in a container while it can be deployed through a process manager such as PM2? To make the question clearer and more meaningful, assuming a service oriented environment with various Microservice (all written in Node for example) where horizontal scalability is very important and where each Microservice would require replication to distribute processing and add processing power.
In this environment there are two options two stack up those Microservices:
1- Each Microservice can be dockerized (via docker, LXC, LXD, etc)
2- Each Microservice can be daemonized (via PM2, Forever, etc)
If we go for the first option, dockerization needs more disk space, more complex routing, and longer time to set up. This is while the second option allows for consuming globally installed dependencies which makes updating such dependencies easier, it would consume less disk space (as much as the physical size of the Microservice only), simpler routing/clustering.
If I wanted to decide I would go for the second option and instead of containers I would add VMs/Physical Machines (Database Server, Cache Server, HTTP Server) where needed. But is there anything that I am actually missing? Are these two really comparable at all? And finally what do containers offer that make them favorable over processes?