Help with understanding general glassfish concepts
I am having trouble getting to grips with Glassfish general concepts. Specifically what the difference is between a domain and an instance.
My current understanding is that a physical machine (or a VPS) has one or more version of the java JRE installed - it might have Java 6 and Java 7. I then install Glassfish 3 which comes with a default domain (domain1) and inside domain1 is an instance which is a unique JVM and hence can run either version of java (6 or 7).
What is the purpose of domains? Why not just have instances (servers)? Is it because an instance is specific to a machine but a domain is more abstract and can encompass multiple machines in a cluster?
Further, what is a 'web container'? does each domain have a container or is it an instance?
I would really appreciate any 'top-level' help here as my lack of conceptual knowledge is holding me back. I am trying to figure out the best way to deploy the same application code to multiple customers on the same machine so that a) failover from one does not bring the others down and b) there is no chance that one customer could inadvertently (or maliciously) interfere with another customer's application, settings files etc.
Thanks in advance for your help