I'm looking for the possibility to package up a VM instance and the VM host application in a single installable package, removing from the user visibility that they're running e.g. docker, or some VM application.
The aim here is to be able to distribute a server environment of a large and complex LAMP application without the user having to worry about installing any particular dependencies or other applications first. I.e. I don't want them to have to know that it's a docker file, or a VMWare VM instance and have to install that host application to be able to run the provided file, I simply want a single package or executable to run the whole shebang.
- Whatever the VM host application is should be able to run along side any other installed instances of that application
- The programs running in the VM should obviously not be applications running on the host, i.e. should not touch host OS filesystem, etc.
- It should be possible to install and uninstall this thing as a single operation (i.e. user should not have to pre-install any dependencies, or separately install program A in order to run the downloaded file)
- Interaction with the environment inside the VM would be through a custom application which would get installed at the same time. This would talk to the API of whatever the VM host was in order to start/stop it, and would also talk to the application running inside the VM.
I care much less about which particular virtualisation/container program is used than the ability to package it all up in an easy to install environment; if one vendor/application supported this, this would be my main motivation to use it for this application.